[no-ci] Fix backport release checks and add release dry-run#2161
Conversation
Require mainline cuda-bindings and cuda-python releases to explicitly declare a planned backport tag or mark it not planned. Keep actual backport releases unblocked while surfacing missing notes as warnings, and preserve docs builds for older tags that still use ci/versions.json.
Validate release docs, archives, and wheels without publishing to GitHub Releases, GitHub Pages, TestPyPI, or PyPI.
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
Add an explicit dry-run docs branch input so release dry-runs can optionally write generated docs to a seeded non-production branch while keeping artifact-only dry-runs as the default.
Make dry-run the first and default release action so production publishing must be deliberately selected for manual release workflow runs.
Require optional dry-run docs deployments to target a non-production gh-pages-* branch so manual release dry-runs cannot accidentally publish docs to production or source branches.
Comprehensive dry-run testing reportI tested this PR with a four-run dry-run batch designed to approximate the
All four workflow runs completed successfully. The batch exercised:
Workflow runs
Run 3 needed a rerun because of an infrastructure failure. The rerun succeeded, Common checks verifiedFor all four runs:
Per-run observations1.
|




Description
Closes #2141.
Supersedes #2143. PR #2143 was useful for unblocking the 12.9.7 release process quickly, but this PR replaces it with a narrower and more maintainable fix for the release workflow.
This PR fixes the issue that blocked the 12.9.7 release process and, just as importantly, makes the release workflow easy to test before an actual release. The new
dry-runmode validates the release path without publishing to GitHub Releases, TestPyPI, or PyPI, and it can optionally deploy generated docs to a non-productiongh-pages-*branch so we can inspect the docs exactly as they would be published before running the real release.Fix
The release-note check now runs from the workflow branch, not from the release tag checkout. This keeps the checker on current CI tooling while still using the requested tag as the release identity/source for the release build.
For
cuda-bindingsandcuda-pythonmainline releases, the workflow now also requires an explicit backport decision:v12.9.7; orbackport-git-tagtonot planned.For
cuda-bindingsandcuda-python, the tag inputs are interpreted differently for mainline and backport releases. For a mainline release, the mainline release notes are required, andbackport-git-tagmust either name the planned backport tag or be set tonot planned. If a planned backport tag is provided, the corresponding backport release notes are required too, and missing or empty notes fail the mainline release. For an actual backport release,backport-git-tagis left blank; the checker looks for release notes for the backport tag itself, but missing or empty notes only emit a GitHub Actions warning so they do not block an otherwise valid package release late in the process. With the mainline-timebackport-git-tagcheck in place, that warning case is not expected to occur in normal release flow.The docs workflow also accepts older release-tag source trees that still have
ci/versions.jsoninstead ofci/versions.yml.Dry-Run Mode
The manual release workflow now has a
release-actioninput:dry-runis the default and safe choice.full-releasemust be selected deliberately for the real release.In
dry-runmode:If
dry-run-docs-branchis provided, the workflow deploys generated docs to that branch. The branch must matchgh-pages-*, for examplegh-pages-dry-run, and this input is rejected forfull-release.Dry-Run Docs Branch Reset
Before a release dry-run batch, reset the dry-run docs branch to the current production docs branch:
Then run the dry-run workflows sequentially, using
dry-run-docs-branch: gh-pages-dry-run. After the batch finishes, fetchupstream/gh-pages-dry-runand compare it withupstream/gh-pagesto inspect the exact generated docs update before runningfull-release.Validation
Focused unit coverage was added for the release-note checker, including:
cuda-bindingsandcuda-pythonreleases;
not planned;I also tested the PR exhaustively with a four-run dry-run batch:
cuda-bindings,v13.3.1cuda-python,v13.3.1cuda-bindings,v12.9.7cuda-python,v12.9.7Full test report:
#2161 (comment)
The batch verified both the mainline and backport release paths for both components, including release-note checks, artifact validation, skipped external publishing, and docs deployment to
gh-pages-dry-run.