Skip to content

Split dist-smoke into its own non-blocking workflow (#1611)#1710

Merged
mcdonc merged 1 commit into
mainfrom
decouple-smoke
Jul 21, 2026
Merged

Split dist-smoke into its own non-blocking workflow (#1611)#1710
mcdonc merged 1 commit into
mainfrom
decouple-smoke

Conversation

@mcdonc

@mcdonc mcdonc commented Jul 21, 2026

Copy link
Copy Markdown
Owner

Follow-up to #1705 / #1707 / #1708 / #1709.

Summary

Split the dist-smoke test out of release.yml into its own standalone workflow that does NOT block release. The smoke gate is currently red on #1709 (a klangkd caddy bug, not a wheel-packaging bug); keeping it as a release blocker meant no release could happen until #1709 is fixed — the wrong coupling.

Changes

Topology

Workflow Triggers Jobs
release.yml push: tags: v* build-and-releasebuild-wheel (publishes PyPI)
dist-smoke.yml workflow_dispatch build-wheeldist-smoke-test (no publish)

"Never yank" invariant

Still holds — by workflow, not by CI gate. The release manager runs dist-smoke.yml against the RC branch first, and only tags once it's green (or after manually assessing any failures). A broken wheel reaching PyPI requires the release manager to skip the smoke step, which is a human decision, not an accident.

Verification

Both YAML files parse. Job topology confirmed via python -c 'import yaml; ...':

  • release.yml: both jobs at (root) (parallel), build-wheel carries environment: pypi.
  • dist-smoke.yml: build-wheeldist-smoke-test, no environment.

First end-to-end run of the new smoke workflow happens the next time someone runs gh workflow run dist-smoke.yml — expected to fail on #1709 until that lands.

The dist-smoke-test gate is currently red on #1709 (klangkd's caddy child
can't coexist with another caddy / binds 2019 on bootstrap instead of the
UDS) — a klangkd bug, not a wheel-packaging bug. Holding the release
pipeline hostage to the smoke being green means no release can happen
until #1709 is fixed, which is the wrong coupling.

Restructure:

- New .github/workflows/dist-smoke.yml — standalone workflow, workflow_dispatch
  only, two jobs (build-wheel → dist-smoke-test). No publish. This is now a
  release-engineering tool the release manager runs against a release-
  candidate branch before tagging (`gh workflow run dist-smoke.yml --ref <branch>`).

- Revert .github/workflows/release.yml to its pre-#1705 shape:
  build-and-release + build-wheel (env: pypi, publishes) run in parallel,
  no smoke in the chain. The "never yank" invariant now holds by workflow:
  the release manager runs dist-smoke.yml against the RC branch first, and
  only tags once it's green (or after manually assessing any failures).

- scripts/dist-smoke-test.sh header: updated the CI-without-tagging pointer
  to reference dist-smoke.yml instead of release.yml's workflow_dispatch.

Also notes in dist-smoke.yml that the smoke is currently expected to fail
until #1709 lands, so a maintainer running it isn't surprised.

Follow-up to #1705, #1707, #1708.
@mcdonc
mcdonc merged commit a4faff4 into main Jul 21, 2026
9 checks passed
@mcdonc
mcdonc deleted the decouple-smoke branch July 21, 2026 17:52
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.

1 participant