Repository navigation
Check tls-client version #349
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |