From 361a8464c661392981576d9dbb6be61d41fb61ee Mon Sep 17 00:00:00 2001 From: Thomas Vincent Date: Thu, 20 Aug 2026 19:21:35 -0700 Subject: [PATCH] ci: automate GitHub releases Signed-off-by: Thomas Vincent --- .github/workflows/release.yml | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..9d51174 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,48 @@ +name: GitHub Release + +on: + push: + tags: + - 'rrd-*' + workflow_dispatch: + inputs: + tag: + description: Existing rrd-* tag to release + required: true + type: string + +permissions: + contents: write + +concurrency: + group: release-${{ inputs.tag || github.ref_name }} + +jobs: + release: + name: Create GitHub release + runs-on: ubuntu-latest + env: + GH_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ inputs.tag || github.ref_name }} + steps: + - name: Validate release tag + shell: bash + run: | + if [[ ! "$RELEASE_TAG" =~ ^rrd-[0-9]+\.[0-9]+\.[0-9]+([A-Za-z0-9.-]+)?$ ]]; then + echo "Invalid release tag: $RELEASE_TAG" >&2 + exit 1 + fi + + - name: Create release + shell: bash + run: | + if gh release view "$RELEASE_TAG" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then + echo "GitHub release already exists for $RELEASE_TAG" + exit 0 + fi + + gh release create "$RELEASE_TAG" \ + --repo "$GITHUB_REPOSITORY" \ + --verify-tag \ + --generate-notes \ + --title "rrd ${RELEASE_TAG#rrd-}"