Skip to content

ci(release): publish tagged releases from triggering ref - #249

Merged
binaryaaron merged 2 commits into
binaryaaron/add-misefrom
binaryaaron/release-on-tags
Nov 10, 2026
Merged

binaryaaron merged 2 commits into
binaryaaron/add-misefrom
binaryaaron/release-on-tags

Conversation

@binaryaaron

@binaryaaron binaryaaron commented Aug 13, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • trigger the full release path when a v* tag is pushed
  • retain manual workflow_dispatch with dry-run and create-gh-release, without a separate release-ref
  • build, publish, and deploy docs from the run's triggering revision
  • remove the temporary release-target checkout and project-directory task arguments added in build: migrate developer tasks to mise #211
  • keep release orchestration thin by calling build:wheel, docs:build, and docs:deploy
  • target manually created GitHub release tags at the triggering github.sha
  • reject tag-triggered releases when the tag and built package version differ
  • add regression coverage for trigger, checkout, task, and tag-release contracts

Context

This is stacked on #211. The separate release-ref came from the generic FW-CI release template in #54 and remained when #93 moved the release workflow into this repository. Safe Synthesizer later moved to tag-push releases in Safe-Synthesizer #361. This follow-up adopts that single-revision strategy while preserving manual dispatch for dry runs and controlled release testing.

Validation

  • mise tasks validate: all 26 tasks passed
  • mise run test -- tests/tools/test_mise_configuration.py -q: 22 focused workflow and tooling tests passed
  • mise run check ::: test: 1,213 tests passed; format, lint, type, lock, SPDX, and benchmark shell checks passed
  • mise run docs:build: strict documentation build passed
  • independent reviewed-engineering review: accepted with no findings

Commits 5f3cb9c and 734d776 are signed and DCO-signed.

@binaryaaron
binaryaaron requested review from a team as code owners August 13, 2026 23:10
@greptile-apps

greptile-apps Bot commented Aug 13, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable issues remain.

Summary

This PR makes v* tag pushes run the full release path. Wheel builds, publishing, GitHub releases, and docs now use the triggering revision.

  • Pushing a version tag starts a release from the tagged revision.
  • Build and docs tasks now use the current checkout.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A["v* tag push or manual run"] --> B["Check out triggering revision"]
  B --> C["Build wheel"]
  C --> D{"Tag matches wheel version?"}
  D -->|Mismatch| E["Stop before uploads"]
  D -->|Match or branch run| F["Upload to Test PyPI"]
  F --> G["Upload to PyPI unless dry-run"]
  G --> H["Create GitHub release when enabled"]
  H --> I["Build and deploy release docs"]
Loading

Reviews (6) · Last reviewed commit: "fix(release): reject mismatched version ..." · Reviewed by Greptile

Comment thread .github/workflows/release.yml Resolved
@binaryaaron
binaryaaron force-pushed the binaryaaron/release-on-tags branch 2 times, most recently from cfe2ec2 to 734d776 Compare August 14, 2026 15:59
@binaryaaron
binaryaaron force-pushed the binaryaaron/add-mise branch from 3cea487 to 85357f2 Compare August 14, 2026 18:13
@binaryaaron
binaryaaron force-pushed the binaryaaron/release-on-tags branch from 734d776 to d64940d Compare August 14, 2026 18:13
@binaryaaron
binaryaaron force-pushed the binaryaaron/release-on-tags branch from d64940d to 83e7ab3 Compare October 23, 2026 20:58
Comment thread DEVELOPMENT.md

Release tags use `vMAJOR.MINOR.PATCH` for stable releases and `vMAJOR.MINOR.PATCHrcN` for release candidates, while the Python package version is the unprefixed version.

Release publishing is handled by `.github/workflows/release.yml`.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Could we document the new release sequence here? Pushing a v* tag now publishes to production PyPI, creates the GitHub release, and deploys docs. It would help to explain how maintainers should use the manual dry-run before pushing the release tag, since that push starts publishing immediately.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

You are right, and this was missed: #249 merged into #211 (head 6e7a216e) with DEVELOPMENT.md still saying only that release.yml handles publishing. The Releases section in #211 now documents the sequence (commit 5ebd2f1): a pushed v* tag builds the wheel, checks the tag against the package version, publishes to Test PyPI, then PyPI, creates the GitHub release, and deploys docs. Test PyPI runs first, so a failure there stops the run before PyPI.

Checking the dry run turned up two limits that the section states plainly:

  • There is no rehearsal before the tag exists. The version comes from Git tags (uv-dynamic-versioning), so an untagged commit builds a +<hash> version that PyPI and Test PyPI do not accept, and creating the tag starts the real release. The manual dry run works only on an existing release tag.
  • create-gh-release defaults to true and is not gated on dry-run, so a dry run left at the default still creates the GitHub release and deploys docs.

I did not change the workflow. If you want a rehearsal that works before tagging, that needs a version override for dry runs in build:wheel; tell me if you want it in this PR or a follow-up.

Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
@binaryaaron
binaryaaron force-pushed the binaryaaron/release-on-tags branch from 83e7ab3 to 6e7a216 Compare November 10, 2026 06:45
@binaryaaron
binaryaaron merged commit 6e7a216 into binaryaaron/add-mise Nov 10, 2026
7 checks passed
@binaryaaron
binaryaaron deleted the binaryaaron/release-on-tags branch November 10, 2026 21:57
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