fix: gate PyPI releases on abi3 audit and import tests again - #243
Merged
Conversation
#241 split build jobs into a separate build-wheels.yml reusable workflow, but that made it impossible for callers to depend on an individual job inside it — only the whole call. Two regressions fell out of that: publish.yml's release job needed only the build call (no abi3audit/import-test ever ran against the wheels being published), and wheels.yml's abi3audit/import-test/import-test-nonabi3 needed the whole build call, so an unrelated platform's build failure blocked checks that didn't depend on it. Merges the build jobs back into wheels.yml so needs: can target specific jobs again (needs: [linux], needs: [linux-nonabi3, macos-nonabi3, windows-nonabi3]), and has publish.yml call wheels.yml instead of the build jobs directly, so a tag push runs the real audit and test suite against the wheels it's about to publish. Also adds a concurrency group so superseded pushes to the same ref don't queue up redundant full-matrix runs.
This was referenced Aug 5, 2026
schroedk
added a commit
that referenced
this pull request
Aug 5, 2026
…246) Same bug class as #243: needs: [linux-nonabi3, macos-nonabi3, windows-nonabi3] made every test leg (including Linux/Windows-only ones) wait for, and get skipped by, an unrelated platform's build. macos-nonabi3 (macos-15-intel) is consistently the slowest of the three builds — confirmed via job logs it's not a cache miss, but the LTO relink cost of the release profile on that runner's hardware — so Linux/Windows tests were needlessly gated on it. Splits into import-test-nonabi3-{linux,macos,windows}, each needing only its own platform's build job. Doesn't change overall run duration (macOS stays the critical path for its own tests), but a macOS build failure no longer skips unrelated Linux/Windows checks.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
#241 split build jobs into build-wheels.yml so publish.yml and wheels.yml could share them, but that made per-job
needs:impossible across the reusable-workflow boundary — only the whole call. Two regressions fell out:publish.yml'sreleasejob needed only[build]; the freshly-built release wheels never ran throughabi3audit/import-testin that run.wheels.yml'sabi3audit/import-test/import-test-nonabi3needed the wholebuildcall, so an unrelated platform's build failure (e.g. s390x) blocked checks that don't depend on it.Fix: merge the build jobs back into
wheels.yml(restoring fine-grainedneeds: [linux]/needs: [linux-nonabi3, macos-nonabi3, windows-nonabi3]), and havepublish.ymlcallwheels.ymlitself so a tag push runs the real audit/test suite against the wheels it's about to publish. Also adds aconcurrencygroup so superseded pushes don't queue redundant full-matrix runs.build-wheels.ymlis deleted — nothing else needed it as a separate file oncepublish.ymlcallswheels.ymldirectly.