Skip to content

[ci] Make crate releases resumable - #3515

Open
joshlf wants to merge 1 commit into
G25sqrb3x2qf3c2e26jcymmrjhitfoijbfrom
Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz
Open

[ci] Make crate releases resumable#3515
joshlf wants to merge 1 commit into
G25sqrb3x2qf3c2e26jcymmrjhitfoijbfrom
Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz

Conversation

@joshlf

@joshlf joshlf commented Jul 31, 2026

Copy link
Copy Markdown
Member

The old core workflow tagged before publishing, rejected any existing
tag on a retry, and serialized every version behind a workflow-wide
approval lock. It also compared only with HEAD^, so a multi-commit
push could silently miss a version bump.

Recent OIDC runs authenticated successfully but crates.io rejected
zerocopy-derive because trusted-publisher authorization is configured
per crate. Diagnose 403s with the exact owner, repository, workflow,
environment, and crate settings needed, and make retries reconcile
matching registry checksums rather than republishing blindly.

Package and verify release archives without credentials. Transfer only
the archive bytes, construct the release plan from trusted constants in
the privileged checkout, reproduce every archive byte-for-byte, and
publish dependencies in order without running package code. Scope the
Cargo and GitHub tokens to only their respective subprocesses.

Create or accept the exact GitHub tag and release only after all crates
are public. Accept completed matching state after a lost response,
reject yanked or mismatched crates, wrong tags, drafts, and release
metadata, and use version-specific concurrency so stale approvals cannot
block later versions.

Repair the Anneal publishability failure by giving its path dependency
an exact registry version and publishing exocrate first. The manually
published exocrate 0.2.0 and cargo-anneal alpha.24 were built from dirty
manifests that do not match repository source, so record that historical
exception and advance the incompatible checked-in exocrate API to 0.3.0.
Make packaged README assets absolute.

Run the exact release packaging boundaries in PR CI, and test the
cross-file workflow contracts and all reconciler failure/retry states.


Latest Update: v7 — Compare vs v6

📚 Full Patch History

Links show the diff between the row version and the column version.

Version v6 v5 v4 v3 v2 v1 Base
v7 vs v6 vs v5 vs v4 vs v3 vs v2 vs v1 vs Base
v6 vs v5 vs v4 vs v3 vs v2 vs v1 vs Base
v5 vs v4 vs v3 vs v2 vs v1 vs Base
v4 vs v3 vs v2 vs v1 vs Base
v3 vs v2 vs v1 vs Base
v2 vs v1 vs Base
v1 vs Base
⬇️ Download this PR

Branch

git fetch origin refs/heads/Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz && git checkout -b pr-Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz FETCH_HEAD

Checkout

git fetch origin refs/heads/Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz && git checkout FETCH_HEAD

Cherry Pick

git fetch origin refs/heads/Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz && git cherry-pick FETCH_HEAD

Pull

git pull origin refs/heads/Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz

Stacked PRs enabled by GHerrit.

@codecov-commenter

codecov-commenter commented Jul 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (G25sqrb3x2qf3c2e26jcymmrjhitfoijb@1d9867a). Learn more about missing BASE report.

Additional details and impacted files
@@                         Coverage Diff                          @@
##             G25sqrb3x2qf3c2e26jcymmrjhitfoijb    #3515   +/-   ##
====================================================================
  Coverage                                     ?   91.85%           
====================================================================
  Files                                        ?       20           
  Lines                                        ?     6093           
  Branches                                     ?        0           
====================================================================
  Hits                                         ?     5597           
  Misses                                       ?      496           
  Partials                                     ?        0           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@joshlf
joshlf force-pushed the G25sqrb3x2qf3c2e26jcymmrjhitfoijb branch from f0716f1 to d04c064 Compare July 31, 2026 23:39
@joshlf
joshlf force-pushed the Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz branch 2 times, most recently from f7e1231 to ba38f94 Compare July 31, 2026 23:45
@joshlf
joshlf force-pushed the G25sqrb3x2qf3c2e26jcymmrjhitfoijb branch from d04c064 to 42b7a55 Compare July 31, 2026 23:45
@joshlf
joshlf force-pushed the Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz branch 2 times, most recently from 0b7d536 to cbd2d66 Compare August 1, 2026 00:04
@joshlf
joshlf force-pushed the G25sqrb3x2qf3c2e26jcymmrjhitfoijb branch from 42b7a55 to 5093546 Compare August 1, 2026 00:04
The old core workflow tagged before publishing, rejected any existing
tag on a retry, and serialized every version behind a workflow-wide
approval lock. It also compared only with HEAD^, so a multi-commit
push could silently miss a version bump.

Recent OIDC runs authenticated successfully but crates.io rejected
zerocopy-derive because trusted-publisher authorization is configured
per crate. Diagnose 403s with the exact owner, repository, workflow,
environment, and crate settings needed, and make retries reconcile
matching registry checksums rather than republishing blindly.

Package and verify release archives without credentials. Transfer only
the archive bytes, construct the release plan from trusted constants in
the privileged checkout, reproduce every archive byte-for-byte, and
publish dependencies in order without running package code. Scope the
Cargo and GitHub tokens to only their respective subprocesses.

Create or accept the exact GitHub tag and release only after all crates
are public. Accept completed matching state after a lost response,
reject yanked or mismatched crates, wrong tags, drafts, and release
metadata, and use version-specific concurrency so stale approvals cannot
block later versions.

Repair the Anneal publishability failure by giving its path dependency
an exact registry version and publishing exocrate first. The manually
published exocrate 0.2.0 and cargo-anneal alpha.24 were built from dirty
manifests that do not match repository source, so record that historical
exception and advance the incompatible checked-in exocrate API to 0.3.0.
Make packaged README assets absolute.

Run the exact release packaging boundaries in PR CI, and test the
cross-file workflow contracts and all reconciler failure/retry states.

gherrit-pr-id: Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz
@joshlf
joshlf force-pushed the G25sqrb3x2qf3c2e26jcymmrjhitfoijb branch from 5093546 to 1d9867a Compare August 1, 2026 00:08
@joshlf
joshlf force-pushed the Gr5dxmcwfct6ij22jsf3sevpdetlzlcuz branch from cbd2d66 to c40fe8b Compare August 1, 2026 00:08
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.

2 participants