Skip to content

Cut releases from the changelog and publish with OIDC - #64

Merged
nojaf merged 1 commit into
mainfrom
release-flow
Aug 29, 2026
Merged

Cut releases from the changelog and publish with OIDC#64
nojaf merged 1 commit into
mainfrom
release-flow

Conversation

@nojaf

@nojaf nojaf commented Aug 29, 2026

Copy link
Copy Markdown
Collaborator

A push to main now ends with release-detect, which compares the latest dated release in CHANGELOG.md against what is on npm and dispatches release.yml when the changelog is ahead. npm rather than the git tags, because npm is what a publish collides with, and this repository has no tags at all.

The release job authenticates with npm trusted publishing instead of a long-lived token, so it runs in a release environment with id-token write. That is the one step that is not bun: bun publish cannot use the workflow's OIDC token yet (oven-sh/bun#22423), so npm uploads a tarball bun pm pack produced. Packing with bun is also what resolves the catalog: ranges npm would otherwise publish verbatim.

The published version is taken from the changelog at release time rather than committed, which is what the old changelog-updater tried to do. It could not have worked: it handed the changelog CLI an absolute path that the CLI joins onto its own working directory, so prepublishOnly died on ENOENT. prepublishOnly is now a prepack, which is what bun pm pack runs.

The package also gained the repository field provenance requires, and the release script copies the root README and LICENSE next to the manifest, because only the ones sitting there get published. Moving the plugin into packages/ had silently dropped both from the tarball.

A push to main now ends with release-detect, which compares the latest
dated release in CHANGELOG.md against what is on npm and dispatches
release.yml when the changelog is ahead. npm rather than the git tags,
because npm is what a publish collides with, and this repository has no
tags at all.

The release job authenticates with npm trusted publishing instead of a
long-lived token, so it runs in a release environment with id-token
write. That is the one step that is not bun: bun publish cannot use the
workflow's OIDC token yet (oven-sh/bun#22423), so npm uploads a tarball
bun pm pack produced. Packing with bun is also what resolves the
catalog: ranges npm would otherwise publish verbatim.

The published version is taken from the changelog at release time rather
than committed, which is what the old changelog-updater tried to do. It
could not have worked: it handed the changelog CLI an absolute path that
the CLI joins onto its own working directory, so prepublishOnly died on
ENOENT. prepublishOnly is now a prepack, which is what bun pm pack runs.

The package also gained the repository field provenance requires, and
the release script copies the root README and LICENSE next to the
manifest, because only the ones sitting there get published. Moving the
plugin into packages/ had silently dropped both from the tarball.
@nojaf
nojaf merged commit 48ac9d0 into main Aug 29, 2026
4 checks passed
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