Merge pull request 'discourse-release: tag mode' (#2) from release-by-tag into main

This commit was merged in pull request #2.
This commit is contained in:
jcoffey-dev committed 2026-09-27 02:26:59 +00:00
commit e9293996e2
3 files changed
+36

No files matched your search

+13
View File
@@ -38,6 +38,19 @@ jobs:
discord-webhook: ${{ secrets.DISCORD_RELEASE_WEBHOOK }} # optional
```
A workflow that creates its release with the job's own token (`secrets.GITHUB_TOKEN`)
must announce it itself, as a last step: Gitea starts no workflow for events
the Actions bot causes, so `on: release` never fires for such a release.
```yaml
- uses: coffey-labs/actions/discourse-release@<sha>
with:
api-key: ${{ secrets.DISCOURSE_RELEASE_KEY }}
tag: ${{ github.ref_name }}
```
Both at once is fine: a repo+tag is announced once, whichever runs first.
- The repo must be listed in `discourse-release/release-map.json`, the one
place that maps repos to forum categories.
- `DISCOURSE_RELEASE_KEY` is an org-level secret (coffey-labs and inbuxa)
+10
View File
@@ -11,6 +11,14 @@ inputs:
description: optional Discord webhook URL; when set, the announcement is also posted there
required: false
default: ""
tag:
description: >-
announce the release with this tag instead of the triggering release
event. Needed in a workflow that creates its release with the job's own
token: Gitea does not start workflows for events the Actions bot causes,
so `on: release` never fires for those releases.
required: false
default: ""
forum:
description: forum base URL
required: false
@@ -25,6 +33,8 @@ runs:
FORUM: ${{ inputs.forum }}
REPO: ${{ github.repository }}
EVENT_PATH: ${{ github.event_path }}
TAG: ${{ inputs.tag }}
GITEA_TOKEN: ${{ github.token }}
ACTION_PATH: ${{ github.action_path }}
MAP: ${{ github.action_path }}/release-map.json
run: |
+13
View File
@@ -10,6 +10,19 @@ if [ -z "$category_path" ]; then
exit 1
fi
if [ -n "${TAG:-}" ]; then
# Called with a tag (a release made by the job's own token): fetch it and
# treat it as the event, so everything below is the same either way.
base="${CI_SERVER_INTERNAL:-$GITHUB_SERVER_URL}"
EVENT_PATH=$(mktemp)
curl -fsS -H "Authorization: token $GITEA_TOKEN" "$base/api/v1/repos/$REPO/releases/tags/$TAG" |
jq '{release: .}' > "$EVENT_PATH"
fi
if [ "$(jq -r '.release.draft // false' "$EVENT_PATH")" = true ]; then
echo "release is a draft; not announcing"
exit 0
fi
tag=$(jq -r '.release.tag_name' "$EVENT_PATH")
# The category id, looked up anonymously (the category is public); the
# release-bot key is scoped to creating posts and nothing else.