You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix: publish PyPI wheels from stable release workflow - #719
Move trusted PyPI publishing into the top-level stable release workflow. PyPA's trusted publisher cannot authenticate from a reusable workflow. The protected pypi job now verifies and publishes the qualified wheels before the remaining publication jobs.
Replace the nonexistent PyPA action commit with the verified v1.14.2 commit (dc37677b2e1c63e2034f94d8a5b11f265b73ba33).
Add an optional resume run ID. The stable workflow validates that the prior run was completed on main, its commit is an ancestor with the same version, and every qualification job passed or was intentionally skipped, and all 25 required artifacts are present and unexpired. The current dispatch must also run from main. It then reuses that run's exact qualified artifacts, avoiding conflicts with immutable packages already published from the same commit.
Why
The v3.3.24 publish run stopped before uploading to PyPI because the previous action pin has no GHCR manifest. The previous job also ran inside a reusable workflow, which PyPA does not support for trusted publishing. Other channels already published artifacts, so the retry must reuse the prior qualification rather than build a new release commit.
Verification
actionlint on both changed workflows (ignoring existing Depot runner labels)
git diff --check
Confirmed the pinned action's GHCR manifest exists
Confirmed the prior run's 36 qualification jobs consist of 26 successes and 10 intentional skips, with all 25 required artifacts unexpired
After merge, resume the stable release with the original qualification run ID.
The PR appears safe to merge based on the reviewed changes.
Summary
The PR moves trusted PyPI publishing into the top-level stable workflow and adds a way to resume publication from a prior qualification run. The latest push rejects non-main dispatches and checks that all required qualification artifacts remain available before resuming.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart LR
Dispatch[Stable dispatch] --> Resolve[Validate main and resolve version]
Resolve -->|Fresh run| Qualify[Run qualification]
Resolve -->|Resume run ID| Validate[Validate prior run, jobs and artifacts]
Qualify --> PyPI[Publish and verify qualified wheels]
Validate --> PyPI
PyPI --> Publish[Publish remaining channels]
@greptileai I fixed both findings: the resolver now rejects non-main dispatches before PyPI runs, and the download action in the protected job is pinned to the current v8 commit. Please re-review the latest commit, including the resume validation.
@greptileai The latest push rejects non-main dispatches in resolve and now verifies all 25 required, unexpired qualification artifacts before a resume can reach PyPI. Please review the latest commit.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Move trusted PyPI publishing into the top-level stable release workflow. PyPA's trusted publisher cannot authenticate from a reusable workflow. The protected
pypijob now verifies and publishes the qualified wheels before the remaining publication jobs.Replace the nonexistent PyPA action commit with the verified v1.14.2 commit (
dc37677b2e1c63e2034f94d8a5b11f265b73ba33).Add an optional resume run ID. The stable workflow validates that the prior run was completed on main, its commit is an ancestor with the same version, and every qualification job passed or was intentionally skipped, and all 25 required artifacts are present and unexpired. The current dispatch must also run from main. It then reuses that run's exact qualified artifacts, avoiding conflicts with immutable packages already published from the same commit.
Why
The v3.3.24 publish run stopped before uploading to PyPI because the previous action pin has no GHCR manifest. The previous job also ran inside a reusable workflow, which PyPA does not support for trusted publishing. Other channels already published artifacts, so the retry must reuse the prior qualification rather than build a new release commit.
Verification
actionlinton both changed workflows (ignoring existing Depot runner labels)git diff --checkAfter merge, resume the stable release with the original qualification run ID.