Merge pull request #188 from openstreetmap/updater/snmp-0.30.1 #45
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: Build release | |
| on: | |
| push: | |
| branches: [ main ] | |
| paths: | |
| - '.github/workflows/release.yml' | |
| - 'collectors/**' | |
| - 'exporters/**' | |
| - '!exporters/**/metadata.yml' | |
| permissions: | |
| contents: write # required to create releases and upload assets | |
| jobs: | |
| split-arch-release: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Build filtered archives | |
| id: build | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| set -x | |
| REPO="${GITHUB_REPOSITORY##*/}" | |
| TS="$(date -u +'%Y%m%d-%H%M%S')" | |
| AARCHIVE="${REPO}-aarch64-only.tar.zst" | |
| XARCHIVE="${REPO}-x86_64-only.tar.zst" | |
| # aarch64-only: exclude */*/*_x86_64 | |
| git archive --format=tar HEAD \ | |
| -- ":(exclude)*/*/*_x86_64" \ | |
| | zstd -19 --long -T0 --quiet -o "${AARCHIVE}" | |
| # x86_64-only: exclude */*/*_aarch64 | |
| git archive --format=tar HEAD \ | |
| -- ":(exclude)*/*/*_aarch64" \ | |
| | zstd -19 --long -T0 --quiet -o "${XARCHIVE}" | |
| echo "aarchive=${AARCHIVE}" >> "$GITHUB_OUTPUT" | |
| echo "xarchive=${XARCHIVE}" >> "$GITHUB_OUTPUT" | |
| echo "ts=${TS}" >> "$GITHUB_OUTPUT" | |
| - name: Create GitHub release with assets | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| set -euo pipefail | |
| TAG="split-${{ github.ref_name }}-${{ steps.build.outputs.ts }}" | |
| TITLE="Split release ${TAG}" | |
| NOTES=$'Auto-generated from main\n\nAssets:\n- aarch64-only\n- x86_64-only' | |
| gh release create "$TAG" \ | |
| "${{ steps.build.outputs.aarchive }}" \ | |
| "${{ steps.build.outputs.xarchive }}" \ | |
| --title "$TITLE" \ | |
| --notes "$NOTES" | |
| - name: Purge old releases | |
| if: success() | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| set -euo pipefail | |
| set -x | |
| # List all releases (sorted newest first) | |
| mapfile -t releases < <(gh release list --limit 100 --json tagName --jq '.[].tagName') | |
| # Keep only the first 10, delete the rest | |
| for tag in "${releases[@]:10}"; do | |
| echo "Deleting old release: $tag" | |
| gh release delete "$tag" --yes | |
| git push origin ":refs/tags/$tag" || true | |
| done |