Skip to content

ci: gate publish on the full CI suite for the exact publish SHA - #23

Merged
Bre77 merged 2 commits into
mainfrom
fm/o10-e101-s8p-protocol-ci
Aug 5, 2026
Merged

ci: gate publish on the full CI suite for the exact publish SHA#23
Bre77 merged 2 commits into
mainfrom
fm/o10-e101-s8p-protocol-ci

Conversation

@Bre77

@Bre77 Bre77 commented Aug 5, 2026

Copy link
Copy Markdown
Member

Intent

  • publish.yml reruns generation drift + build before publishing, but not buf lint/buf breaking, the upstream/reply coverage gates, TS typecheck, or Python twine check - so it could publish an npm/PyPI pair that never passed the same suite the branch's CI enforces. It also built+published npm fully before ever building the Python distribution, so a broken PyPI build could leave npm published with nothing to match it on PyPI.
    • Added workflow_call: to ci.yml so it can run as a reusable workflow, then added a ci job to publish.yml (uses: ./.github/workflows/ci.yml) that both the release and publish-pypi jobs depend on. Because it's a job in the same push-triggered run, it validates the exact SHA being published, not a rebuild of it.
    • This makes both ecosystems build (npm via pnpm run build, Python via build/twine check, both already in ci.yml) and pass buf/coverage checks before either registry publish step runs.
    • Added a twine check on the PyPI job's own build too, so the artifact that's actually uploaded is checked, not just the earlier CI copy.
    • Changesets, OIDC trusted publishing, and the production environment gate are untouched.

Bre77 added 2 commits August 6, 2026 09:31
publish.yml now calls ci.yml as a reusable workflow before releasing, so
buf lint/breaking, upstream/reply coverage, TS build/typecheck, and Python
build/twine all run against the exact commit being published rather than a
narrower rebuild in the publish job. Both release and publish-pypi depend
on that gate, so both ecosystems must build successfully before either
registry publish runs. Added a twine check on the PyPI job's own build to
keep parity with the artifact it actually uploads.
@Bre77 Bre77 added the fm Opened by a Firstmate crewmate label Aug 5, 2026
@Bre77
Bre77 merged commit 1cc41f5 into main Aug 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fm Opened by a Firstmate crewmate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant