Skip to content

Check tls-client version #349

Check tls-client version

Check tls-client version #349

name: Check tls-client version
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
permissions:
contents: write
jobs:
check-tls-client-version:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y jq gh tree
- name: Get latest release info
run: |
set -euo pipefail
RELEASE_JSON=$(curl -fsSL \
https://api.github.com/repos/bogdanfinn/tls-client/releases/latest)
TAG_NAME=$(echo "$RELEASE_JSON" | jq -r '.tag_name')
if [ -z "$TAG_NAME" ] || [ "$TAG_NAME" = "null" ]; then
echo "Could not determine latest tls-client release."
exit 1
fi
echo "Latest tag: $TAG_NAME"
echo "LATEST_TAG=$TAG_NAME" >> "$GITHUB_ENV"
VERSION="${TAG_NAME#v}"
echo "TLS_CLIENT_VERSION=$VERSION" >> "$GITHUB_ENV"
- name: Check if new version
run: |
set -euo pipefail
if [ -f "./tls-client-version.txt" ]; then
LAST_VERSION=$(tr -d '\r\n' < ./tls-client-version.txt)
else
LAST_VERSION=""
fi
echo "Last processed version: $LAST_VERSION"
echo "Latest version: $LATEST_TAG"
if [ "$LAST_VERSION" = "$LATEST_TAG" ]; then
echo "Already up to date."
echo "SHOULD_CONTINUE=false" >> "$GITHUB_ENV"
else
echo "New version found: $LATEST_TAG"
echo "SHOULD_CONTINUE=true" >> "$GITHUB_ENV"
fi
- name: Download tls-client XGO libraries
if: env.SHOULD_CONTINUE == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -euo pipefail
rm -rf build/temp
mkdir -p build/temp
echo "Downloading tls-client XGO assets"
echo "Tag: $LATEST_TAG"
echo "Version: $TLS_CLIENT_VERSION"
assets=$(gh release view "$LATEST_TAG" \
--repo bogdanfinn/tls-client \
--json assets \
--jq '.assets[].name' \
| grep "^tls-client-xgo-${TLS_CLIENT_VERSION}-" || true)
if [ -z "$assets" ]; then
echo "No XGO assets found for $LATEST_TAG"
exit 1
fi
echo ""
echo "Found XGO assets:"
echo "$assets"
echo ""
while IFS= read -r asset; do
[ -z "$asset" ] && continue
echo "Downloading: $asset"
gh release download "$LATEST_TAG" \
--repo bogdanfinn/tls-client \
--pattern "$asset" \
--dir build/temp
done <<< "$assets"
echo ""
echo "Downloaded files:"
tree build/temp
- name: Setup Node.js
if: env.SHOULD_CONTINUE == 'true'
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Run native-builder script
if: env.SHOULD_CONTINUE == 'true'
run: |
set -euo pipefail
echo "Preparing tls-client $TLS_CLIENT_VERSION libraries"
cd build/native-builder
npm install
npm run prepare-libraries
cd ../..
echo ""
echo "Generated native projects:"
tree src/native
# Template is only needed for generation.
rm -rf src/native/template
- name: Setup .NET
if: env.SHOULD_CONTINUE == 'true'
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Pack native projects
if: env.SHOULD_CONTINUE == 'true'
run: |
set -euo pipefail
VERSION="$TLS_CLIENT_VERSION"
echo "Packing native packages with version: $VERSION"
rm -rf packages
mkdir -p packages
shopt -s nullglob
projects=(src/native/TlsClient.Native.*/*.csproj)
if [ ${#projects[@]} -eq 0 ]; then
echo "No native projects found."
exit 1
fi
for project in "${projects[@]}"; do
echo ""
echo "Packing: $project"
dotnet pack "$project" \
-c Release \
-p:Version="$VERSION" \
--output packages
done
echo ""
echo "Created NuGet packages:"
ls -lah packages/
- name: Publish native projects to NuGet
if: env.SHOULD_CONTINUE == 'true'
env:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
run: |
set -euo pipefail
shopt -s nullglob
packages=(packages/*.nupkg)
if [ ${#packages[@]} -eq 0 ]; then
echo "No NuGet packages found."
exit 1
fi
for package in "${packages[@]}"; do
echo ""
echo "Publishing: $package"
dotnet nuget push "$package" \
--api-key "$NUGET_API_KEY" \
--source https://api.nuget.org/v3/index.json \
--skip-duplicate
done
- name: Update version file
if: env.SHOULD_CONTINUE == 'true'
run: |
echo "$LATEST_TAG" > tls-client-version.txt
echo "Updated version file to $LATEST_TAG"
- name: Commit and push changes
if: env.SHOULD_CONTINUE == 'true'
run: |
set -euo pipefail
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add tls-client-version.txt
if git diff --cached --quiet; then
echo "No changes to commit."
exit 0
fi
git commit -m "Update tls-client version to $LATEST_TAG"
git push