Releasing
August 22, 2026 · View on GitHub
Releases are driven by release-please and
publish to npm tokenless via npm trusted publishing
(GitHub Actions OIDC, npm publish --provenance). No npm token is stored anywhere.
Nothing auto-publishes. release-please only opens a release PR on main; a release is
cut - and the publish step runs - solely when the maintainer merges that release PR. Merging
ordinary PRs never publishes.
Steady state
- Conventional commits land on
main(via merged PRs). - release-please opens or updates a release PR that bumps the version, updates
CHANGELOG.md, and updates.release-please-manifest.json. - The maintainer reviews and merges the release PR. That is the go decision.
.github/workflows/release-please.ymltags the release, re-runs lint, format:check, typecheck, and tests at the tag, and runsnpm publish --access public --provenance, authenticating via OIDC against the trusted publisher configured on npm.
One-time bootstrap (before the first release)
npm only allows configuring a trusted publisher on a package that already exists, and
backpass has never been published. So the very first publish is manual, done once by the
maintainer:
- Manual first publish. From a clean checkout of the release tag (or
mainat the release commit), runnpm publish --access publicas the npm user that will own the package. - Configure the trusted publisher. On npmjs.com, open the
backpasspackage → Settings → Trusted Publisher → GitHub Actions, and set:- Organization or user:
kunchenguid - Repository:
backpass - Workflow filename:
release-please.yml
- Organization or user:
- Done. From then on, step 4 of the steady state publishes tokenless via OIDC with provenance whenever the maintainer merges a release PR. No secret to create, rotate, or leak.
Until the bootstrap is completed, a merged release PR will tag the release but its publish step will fail authentication; re-run the workflow after the bootstrap, or publish that tag manually.