Skip to content

Switch to immutable releases#9601

Merged
tobias-tengler merged 6 commits intomainfrom
tte/immutable-releases
Apr 26, 2026
Merged

Switch to immutable releases#9601
tobias-tengler merged 6 commits intomainfrom
tte/immutable-releases

Conversation

@tobias-tengler
Copy link
Copy Markdown
Member

@tobias-tengler tobias-tengler commented Apr 26, 2026

  • Aligns homebrew publishing to GitHub actions with short-lived app token
  • Release workflow now waits for the child (GitHub actions / homebrew) release workflows to finish
  • Introduced version bands for npm, homebrew and GitHub actions. Ensures we don't overwrite latest versions or other funky behavior if we start patching older versions.

Changes to our release workflow

  • No longer publish releases via the UI!
  • Instead create a git tag through the CLI. The release workflow will create a draft release with the auto-generated changelog and publish it once all artifacts have been appended to the draft release.
  • If you need to take control over the release content, create a release with the expected name and your content, but instead of publishing save as draft and push the tag from the CLI. The workflow will reuse the existing draft release instead of creating its own.

@tobias-tengler tobias-tengler marked this pull request as ready for review April 26, 2026 11:06
Copilot AI review requested due to automatic review settings April 26, 2026 11:06
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the repository’s release automation to support “immutable” releases by creating (or reusing) a draft GitHub Release on tag push, attaching all build artifacts to it, then publishing it and triggering downstream update workflows (Homebrew tap + GitHub Action repos) via a short-lived GitHub App token.

Changes:

  • Added a “compute release context” job and a “create draft release” job, and adjusted dependencies so artifacts are attached before the release is published.
  • Updated npm publishing to use banded dist-tags (latest/major/rc/preview) with logic intended to avoid permanently moving tags on backport publishes.
  • Replaced direct Homebrew and action-repo update logic with a new composite action that dispatches and waits for workflows in other repositories.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
.github/workflows/release.yml Adds draft-release orchestration, immutable/banded npm tagging logic, and dispatch+wait integration for downstream repos.
.github/actions/dispatch-and-watch-workflow/action.yml Introduces a composite action to dispatch a workflow in another repo and wait for completion.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/release.yml Outdated
Comment thread .github/actions/dispatch-and-watch-workflow/action.yml
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the release pipeline to create/publish immutable GitHub Releases from tags and orchestrate downstream publishing (Homebrew + action repos) via a reusable “dispatch and wait” composite action.

Changes:

  • Added a compute-release-context job and a create-draft job to derive release metadata and ensure a draft GitHub Release exists before artifacts are uploaded.
  • Implemented npm “version band” tagging (latest/major/rc/preview) to avoid overwriting latest when patching non-highest stable majors.
  • Added a composite action to dispatch downstream workflows (Homebrew tap + action repos) and wait for their completion.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
.github/workflows/release.yml Adds release context computation, draft-release creation/publishing, npm tag banding, and switches cross-repo updates to a dispatch-and-watch composite action.
.github/actions/dispatch-and-watch-workflow/action.yml Introduces a composite action to dispatch a workflow in another repo, locate its run, and watch it to completion.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/actions/dispatch-and-watch-workflow/action.yml
Comment thread .github/actions/dispatch-and-watch-workflow/action.yml
Comment thread .github/actions/dispatch-and-watch-workflow/action.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants