Skip to content

Merge pull request #188 from openstreetmap/updater/snmp-0.30.1 #45

Merge pull request #188 from openstreetmap/updater/snmp-0.30.1

Merge pull request #188 from openstreetmap/updater/snmp-0.30.1 #45

Workflow file for this run

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