ci: Add release workflow and documentation#176
Conversation
Configures Renovate to manage Cargo and GitHub Actions dependencies with dashboard approval, 7-day minimum release age, and automerge for patches and dev dependencies. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace CARGO_REGISTRY_TOKEN secret with rust-lang/crates-io-auth-action, which exchanges a GitHub OIDC token for a short-lived crates.io token - Wrap the publish job in a `release` GitHub Environment so the secret / approval policy can be configured per-environment, matching the pattern used by arcjet-py and arcjet-js - Tighten top-level permissions to `contents: read` and grant `contents: write` only to the github-release job that needs it - Add `id-token: write` on the publish job for OIDC - Allow token.actions.githubusercontent.com:443 in the publish job's hardened egress list (needed for the OIDC token exchange) - Bump pinned action SHAs to match what is on main - Update RELEASE.md prerequisites and troubleshooting to describe the Trusted Publisher + environment setup instead of token-based publishing Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
crates.io-side setup needed before this can shipThe workflow is now wired for Trusted Publishing, but the crates.io side has to be configured separately before a tag push will succeed. Currently blocked because crates.io is not recognising my Current crate ownership on crates.io:
What I've asked crates.io to do (will cc you on the email)
What needs to happen in this repo once crates.io access is restored
No |
|
Also, speaking as myself and not being puppeted by Claude, We should have at least one more member on the Rust team so that we can get workflow approvals from somebody other than the submitter. |
Summary
.github/workflows/release.yml) triggered byv*tag pushes that runs tests, publishesarcjet-gravityto crates.io, and creates a GitHub Release.rust-lang/crates-io-auth-action— noCARGO_REGISTRY_TOKENsecret is required. The publish job is wrapped in areleaseGitHub Environment so a manual approval gate can be configured if desired (matches the pattern used byarcjet-pyandarcjet-js).RELEASE.mddocumenting the end-to-end release process, prerequisites, and troubleshooting.Setup required before the first release
This PR is the workflow definition only. Before a tag push will succeed, two pieces of out-of-repo configuration must be in place — see the general comment on this PR for context:
releaseGitHub Environment in repo Settings → Environments. Optionally add required reviewers for a manual approval gate on the publish step.arcjet, repogravity, workflowrelease.yml, environmentrelease. Adding this requires user-level ownership on the crate, which is currently blocked on a help@crates.io ticket (the only existing user owner left the company).Test plan
RELEASE.mdfor accuracy and completenessv0.0.3(the version already onmain) and pushing the tag🤖 Generated with Claude Code