Skip to content

feat: automated Release Announcement draft maintained by GitHub Copilot#3641

Closed
pljones wants to merge 5 commits into
mainfrom
autobuild-copilot/update-release-announcement
Closed

feat: automated Release Announcement draft maintained by GitHub Copilot#3641
pljones wants to merge 5 commits into
mainfrom
autobuild-copilot/update-release-announcement

Conversation

@pljones
Copy link
Copy Markdown
Collaborator

@pljones pljones commented Mar 15, 2026

Short description of changes

Adds ReleaseAnnouncement.md — a working draft of the end-user release announcement (separate from ChangeLog) that GitHub Copilot keeps up to date automatically, matching the conversational bullet-point style used in real Jamulus Discussion posts.

New files

  • ReleaseAnnouncement.md — live draft; flat bullet list; includes Windows virus-checker REMINDER and pointer to tools/get_release_contributors.py
  • .github/release-announcement-template.md — pristine blank template; copied over the draft after each full release
  • .github/prompts/release-announcement.prompt.yml — AI prompt with verbatim real Jamulus announcement examples; modelParameters.maxCompletionTokens: 16384 / temperature: 0.1 (action default of 200 tokens would truncate mid-document)

Workflow: .github/workflows/update-release-announcement.yml

  • pull_request_target: closed → main — updates draft on every merged PR; workflow + prompt always sourced from main; PR body written to $RUNNER_TEMP via env: before passing as file_input (prevents YAML injection); CHANGELOG: SKIP in PR body skips update
  • push: branches: autobuild** — updates draft on the autobuild branch itself so developers can preview how their change would read in the announcement before merging; loop prevention via github.actor != 'github-actions[bot]'; autobuild.yml already has ReleaseAnnouncement.md in paths-ignore
  • push: tags: r* + reset-after-release job — resets to template only on clean version tags (r3_12_0); pre-release tags (r3_12_0beta1, r3_12_0rc1) intentionally leave the draft intact so it accumulates through the beta/RC cycle
  • Non-empty guard before overwriting the file (protects against empty AI response wiping the draft)

autobuild.ymlReleaseAnnouncement.md, .github/release-announcement-template.md, .github/prompts/** added to paths-ignore so bot commits don't trigger builds.

CONTRIBUTING.md / .github/pull_request_template.md — note that CHANGELOG: feeds both ChangeLog and ReleaseAnnouncement.md; CHANGELOG: SKIP skips both.

CHANGELOG: SKIP

Context: Fixes an issue?

Implements the approach discussed in #3443 (comment) and https://github.com/orgs/jamulussoftware/discussions/3626.

Does this change need documentation? What needs to be documented and how?

The release process checklist at https://jamulus.io/contribute/Release-Process could reference ReleaseAnnouncement.md as the draft to polish and publish, replacing the manual "Draft an announcement" step at the RC stage.

Status of this Pull Request

Working implementation. Requires GitHub Models (models: read permission) to be enabled on the repository for actions/ai-inference@v1.

What is missing until this pull request can be merged?

Confirm GitHub Models access is available for this repo.

Checklist

  • I've verified that this Pull Request follows the general code principles
  • I tested my code and it does what I want
  • My code follows the style guide
  • I waited some time after this Pull Request was opened and all GitHub checks completed without errors.
  • I've filled all the content above

Copilot AI and others added 5 commits March 15, 2026 09:35
Adds a working ReleaseAnnouncement.md (separate from the ChangeLog) that is
automatically updated by GitHub Copilot via actions/ai-inference whenever a PR
is merged to main. The announcement is curated for Client users and Server
operators only.

Co-authored-by: pljones <1549463+pljones@users.noreply.github.com>
…ase lifecycle

- Rewrite ReleaseAnnouncement.md to match the flat bullet-point, contributor-credited
  style of real Jamulus Discussion announcements (beta5 example); add Windows REMINDER
  and reference to tools/get_release_contributors.py
- Add .github/release-announcement-template.md as the pristine template for resets
- Add .github/prompts/release-announcement.prompt.yml with real Jamulus examples
  and rules; maintainable without touching workflow YAML
- Rewrite update-release-announcement.yml: use prompt-file + file_input (safe for
  any PR body content), response-file output, push:tags trigger, reset-after-release
  job that resets the draft after every full (non-prerelease) release tag
- Update autobuild.yml paths-ignore for all new documentation files

Co-authored-by: pljones <1549463+pljones@users.noreply.github.com>
…nnouncement link

- Fix critical truncation bug: add modelParameters (maxCompletionTokens: 16384,
  temperature: 0.1) to release-announcement.prompt.yml — actions/ai-inference
  defaults max-tokens to only 200, which would cut off the document mid-write
- Add non-empty guard in workflow before overwriting ReleaseAnnouncement.md with
  the AI response, preventing accidental wipe on empty/missing model output
- Use intermediate variables for BASH_REMATCH capture groups in reset-after-release
  job for clarity
- CONTRIBUTING.md: mention that the CHANGELOG: line also feeds ReleaseAnnouncement.md
  and that CHANGELOG: SKIP skips both
- pull_request_template.md: extend CHANGELOG comment to reference Release Announcement

Co-authored-by: pljones <1549463+pljones@users.noreply.github.com>
Add a new update-announcement-on-autobuild job to
update-release-announcement.yml that runs whenever a developer
pushes to an autobuild** branch.

The job checks out the pushed branch, reads the HEAD commit's
message (honouring CHANGELOG: SKIP), writes commit metadata to
a temp file via env vars (safe from YAML injection), calls
actions/ai-inference@v1 with the same prompt used for PR merges,
then commits the updated ReleaseAnnouncement.md back to the branch.

Loop prevention: the job-level if skips when
github.actor == 'github-actions[bot]'. autobuild.yml already has
ReleaseAnnouncement.md in paths-ignore, so the bot commit never
re-triggers a build run.

Co-authored-by: pljones <1549463+pljones@users.noreply.github.com>
@pljones pljones marked this pull request as draft March 15, 2026 13:51
@pljones pljones closed this Mar 15, 2026
@pljones pljones deleted the autobuild-copilot/update-release-announcement branch March 15, 2026 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants