From aff34332a8743921fe77156ae04af10a04cfde5b Mon Sep 17 00:00:00 2001 From: James Gebbie-Rayet Date: Tue, 25 Aug 2026 15:05:54 +0100 Subject: [PATCH 1/8] Add GitHub Actions workflow to notify Zulip on release --- .github/workflows/zulip-notify.yaml | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/zulip-notify.yaml diff --git a/.github/workflows/zulip-notify.yaml b/.github/workflows/zulip-notify.yaml new file mode 100644 index 0000000..d8aadd2 --- /dev/null +++ b/.github/workflows/zulip-notify.yaml @@ -0,0 +1,33 @@ +name: Notify Zulip + +on: + release: + types: [released] + +jobs: + notify: + runs-on: ubuntu-24.04 + steps: + - name: Post announcement to Zulip + env: + ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }} + ZULIP_BOT_API_KEY: ${{ secrets.ZULIP_BOT_API_KEY }} + ZULIP_SITE: ${{ secrets.ZULIP_SITE }} + REPO: ${{ github.event.repository.name }} + TAG: ${{ github.event.release.tag_name }} + RELEASE_URL: ${{ github.event.release.html_url }} + CHANGELOG: ${{ github.event.release.body }} + run: | + CONTENT=$(cat < Date: Tue, 25 Aug 2026 15:48:45 +0100 Subject: [PATCH 2/8] Remove whitespace --- .github/workflows/zulip-notify.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/zulip-notify.yaml b/.github/workflows/zulip-notify.yaml index d8aadd2..1451776 100644 --- a/.github/workflows/zulip-notify.yaml +++ b/.github/workflows/zulip-notify.yaml @@ -1,5 +1,5 @@ name: Notify Zulip - + on: release: types: [released] From 3b621dc0b6a5bbcb366a7475ba6415da62bea687 Mon Sep 17 00:00:00 2001 From: James Gebbie-Rayet Date: Tue, 25 Aug 2026 17:47:30 +0100 Subject: [PATCH 3/8] Update zulip-notify.yaml --- .github/workflows/zulip-notify.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/zulip-notify.yaml b/.github/workflows/zulip-notify.yaml index 1451776..98ccd51 100644 --- a/.github/workflows/zulip-notify.yaml +++ b/.github/workflows/zulip-notify.yaml @@ -29,5 +29,5 @@ jobs: -u "${ZULIP_BOT_EMAIL}:${ZULIP_BOT_API_KEY}" \ --data-urlencode type=stream \ --data-urlencode "to=announcements" \ - --data-urlencode "topic=releases" \ + --data-urlencode "topic=software releases" \ --data-urlencode "content=${CONTENT}" From 0c95c93f98fdd2921914caf0fd0f9e053ba4d548 Mon Sep 17 00:00:00 2001 From: James Gebbie-Rayet Date: Tue, 25 Aug 2026 23:10:34 +0100 Subject: [PATCH 4/8] Delete zulip-notify.yaml --- .github/workflows/zulip-notify.yaml | 33 ----------------------------- 1 file changed, 33 deletions(-) delete mode 100644 .github/workflows/zulip-notify.yaml diff --git a/.github/workflows/zulip-notify.yaml b/.github/workflows/zulip-notify.yaml deleted file mode 100644 index 98ccd51..0000000 --- a/.github/workflows/zulip-notify.yaml +++ /dev/null @@ -1,33 +0,0 @@ -name: Notify Zulip - -on: - release: - types: [released] - -jobs: - notify: - runs-on: ubuntu-24.04 - steps: - - name: Post announcement to Zulip - env: - ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }} - ZULIP_BOT_API_KEY: ${{ secrets.ZULIP_BOT_API_KEY }} - ZULIP_SITE: ${{ secrets.ZULIP_SITE }} - REPO: ${{ github.event.repository.name }} - TAG: ${{ github.event.release.tag_name }} - RELEASE_URL: ${{ github.event.release.html_url }} - CHANGELOG: ${{ github.event.release.body }} - run: | - CONTENT=$(cat < Date: Tue, 25 Aug 2026 23:11:49 +0100 Subject: [PATCH 5/8] Update release.yml --- .github/workflows/release.yml | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 281d666..e5ad5a7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -121,12 +121,49 @@ jobs: steps: - name: create release + id: create_release uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0 with: name: v${{ github.event.inputs.version }} generate_release_notes: true tag_name: ${{ github.event.inputs.version }} + - name: fetch generated changelog + id: changelog + if: steps.create_release.outcome == 'success' + continue-on-error: true + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # generate_release_notes builds the changelog server-side, so pull + # it back down here rather than trying to reconstruct it locally. + gh release view "${{ github.event.inputs.version }}" --json body -q .body > changelog.txt + + - name: notify Zulip of release + if: steps.create_release.outcome == 'success' + continue-on-error: true + env: + ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }} + ZULIP_BOT_API_KEY: ${{ secrets.ZULIP_BOT_API_KEY }} + ZULIP_SITE: ${{ secrets.ZULIP_SITE }} + REPO: ${{ github.event.repository.name }} + TAG: v${{ github.event.inputs.version }} + RELEASE_URL: ${{ steps.create_release.outputs.url }} + run: | + CONTENT=$(cat < Date: Wed, 26 Aug 2026 11:56:00 +0100 Subject: [PATCH 6/8] Fix typo in stream name from 'announcement' to 'announcements' --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e5ad5a7..225e931 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -160,7 +160,7 @@ jobs: curl -sSf "${ZULIP_SITE}/api/v1/messages" \ -u "${ZULIP_BOT_EMAIL}:${ZULIP_BOT_API_KEY}" \ --data-urlencode type=stream \ - --data-urlencode "to=announcement" \ + --data-urlencode "to=announcements" \ --data-urlencode "topic=software releases" \ --data-urlencode "content=${CONTENT}" From 60a8a92631fd6f06a232a7c78457893773f57302 Mon Sep 17 00:00:00 2001 From: James Gebbie-Rayet Date: Wed, 26 Aug 2026 12:02:03 +0100 Subject: [PATCH 7/8] Update GitHub Action to version 3.0.2 --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 225e931..675db40 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -122,7 +122,7 @@ jobs: - name: create release id: create_release - uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0 + uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2 with: name: v${{ github.event.inputs.version }} generate_release_notes: true From 59c1360cf0bfc3b0bb971159efdee6fe1f47ad6d Mon Sep 17 00:00:00 2001 From: James Gebbie-Rayet Date: Wed, 26 Aug 2026 16:02:38 +0100 Subject: [PATCH 8/8] Fix repository reference in release notes generation --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 675db40..d4dac43 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -137,7 +137,7 @@ jobs: run: | # generate_release_notes builds the changelog server-side, so pull # it back down here rather than trying to reconstruct it locally. - gh release view "${{ github.event.inputs.version }}" --json body -q .body > changelog.txt + gh release view "${{ github.event.inputs.version }}" --repo "${{ github.repository }}" --json body -q .body > changelog.txt - name: notify Zulip of release if: steps.create_release.outcome == 'success'