Skip to content

ci(release): let a release create a new crate, so 0.58.0 and later finish unattended - #651

Merged
GeiserX merged 1 commit into
mainfrom
ci/new-crates-auto
Oct 19, 2026
Merged

GeiserX merged 1 commit into
mainfrom
ci/new-crates-auto

Conversation

@GeiserX

@GeiserX GeiserX commented Oct 19, 2026

Copy link
Copy Markdown
Owner

A new workspace crate stopped the 0.58.0 publish halfway: crates.io trusted publishing only covers crates that already exist, so geiserx_ts_portmapper could not be created by the release, and nothing in CI could do it. Every future new crate would need the same hand step.

The release workflow now passes the CRATES_IO_NEW_CRATE_TOKEN secret to scripts/publish-crates.sh. The token has the scopes publish-new, publish-update and trusted-publishing, is limited to geiserx_*, and does not expire. For each crate the script asks crates.io whether it exists:

  • missing: the first version is uploaded with that token, then release.yml in this repo is registered as its trusted publisher through POST /api/v1/trusted_publishing/github_configs, with the same fields the other 44 crates carry;
  • present: it publishes through OIDC as before, and registers the trusted publisher only if the crate has none (a run that died between the two steps heals on the next run).

Checked against live crates.io: geiserx_ts_runtime reads as existing with a trusted publisher already set, so no write is made, and geiserx_ts_portmapper reads as missing.

After merge, a workflow_dispatch of Release on main finishes 0.58.0: it skips the 39 crates already up and publishes the remaining five, the new one through this path.

…sher without a person

crates.io trusted publishing cannot create a crate, so a new workspace crate used to need a hand
upload with a personal token before a release could finish. The release now reads the
CRATES_IO_NEW_CRATE_TOKEN secret (publish-new, publish-update and trusted-publishing on geiserx_*):
a crate missing from crates.io gets its first version uploaded with it, and release.yml is then
registered as its trusted publisher, so later releases use OIDC like every other crate.
@coderabbitai

coderabbitai Bot commented Oct 19, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 4 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository: GeiserX/tailscale-rs/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 3de96582-527c-47a7-8c67-b1a9009dfbcc
📥 Commits

Reviewing files that changed from the base of the PR and between 93d410f and 03a0558.

📒 Files selected for processing: 2
  • .github/workflows/release.yml
  • scripts/publish-crates.sh
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@GeiserX
GeiserX merged commit e1ac7ef into main Oct 19, 2026
18 checks passed
@GeiserX
GeiserX deleted the ci/new-crates-auto branch October 19, 2026 16:35
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