Skip to content

Build the full wheel matrix weekly, not only at release - #1174

Merged
Siyet merged 1 commit into
msgspec:mainfrom
Yasser-Ameur:ci/build-musllinux-wheels-before-release
Sep 11, 2026
Merged

Siyet merged 1 commit into
msgspec:mainfrom
Yasser-Ameur:ci/build-musllinux-wheels-before-release

Conversation

@Yasser-Ameur

Copy link
Copy Markdown
Contributor

build-wheels.yml skips every musllinux wheel unless build-all is true, and ci.yml only passes build-all on release. So no musllinux wheel, on any architecture, is built outside a release, and the first run that can show a musllinux breakage is the one meant to publish. #1134 hit exactly that when cp310-musllinux_riscv64 failed on the 0.22.0 release build, and #1146 could not be exercised by its own CI for the same reason.

Change. ci.yml gains a weekly schedule trigger (Monday 04:17 UTC) and passes build-all on schedule as well as on release, so the complete matrix, musllinux and riscv64 included, runs on a timer between releases. Pull request and push runs are unchanged, and so is the build-riscv64 label gate. Five lines, no new jobs.

What proves it. A workflow cannot run locally; the file parses as YAML. The first scheduled run showing the musllinux and riscv64 legs outside a release is the proof. If PR-time coverage is wanted as well, a single cp312-musllinux_x86_64 smoke build gated on changes to the wheel workflow, setup.py, pyproject.toml or src/ is a small follow-up; I left it out of this change so the schedule can land on its own.

One question for the reviewer: is weekly the right cadence for the project's CI budget, or would you rather tie the full build to a pre-release tag?

Closes #1150

Problem: build-wheels.yml skips every musllinux wheel unless build-all is
true, and ci.yml sets build-all only on release. No musllinux wheel, on any
architecture, was built outside a release, so the first run that could show
a musllinux breakage was the one meant to publish. msgspec#1134 hit exactly that
when cp310-musllinux_riscv64 failed on the 0.22.0 release build, and msgspec#1146
could not be exercised by its own CI for the same reason.

Change: ci.yml gains a weekly schedule trigger (Monday 04:17 UTC) and passes
build-all on schedule as well as on release, so the complete matrix,
musllinux and riscv64 included, runs on a timer between releases. Pull
request and push runs are unchanged, and so is the build-riscv64 label gate.

What proves it: the first scheduled run showing the musllinux and riscv64
legs outside a release. A workflow cannot be run locally; the file was
checked with a YAML parse.

@Siyet Siyet left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thx for the fix! Weekly sounds good to me. This should help catch wheel build failures before a release

@Siyet
Siyet added this pull request to the merge queue Sep 11, 2026
Merged via the queue into msgspec:main with commit 0830fd1 Sep 11, 2026
27 of 28 checks passed
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.

musllinux wheels only build on release, so breakage surfaces at release time

2 participants