Skip to content

feat(release) automate releases with release-it#21

Merged
indexzero merged 2 commits intomainfrom
ci/release-it
Apr 14, 2026
Merged

feat(release) automate releases with release-it#21
indexzero merged 2 commits intomainfrom
ci/release-it

Conversation

@indexzero
Copy link
Copy Markdown
Owner

@indexzero indexzero commented Apr 14, 2026

What

Adds release-it with the @release-it/keep-a-changelog plugin to automate npm publishing, git tagging, and changelog management. A new release.yml workflow runs release-it --ci --increment <patch|minor|major> via workflow_dispatch. The pnpm release script dispatches this workflow remotely via gh CLI (e.g. pnpm release -- minor). The existing ncc-release.yaml binary workflow switches from workflow_dispatch to a tag-push trigger ([0-9]+.[0-9]+.[0-9]+) so it fires automatically after release-it creates the tag.

Why

The previous release process required five manual steps: editing doc/CHANGELOG.md, bumping package.json, creating a bare semver tag, running pnpm publish, and dispatching the ncc-release workflow. Each step was a potential mistake — wrong version, forgotten tag push, stale changelog links. Changesets was evaluated first but has no config for tag format or changelog path, requiring symlinks and --no-git-tag workarounds. release-it supports bare semver tags (tagName: "${version}"), custom changelog paths (filename: "doc/CHANGELOG.md"), and Keep a Changelog format as first-class config with zero workarounds.

Risk Assessment

Low risk. Additive CI workflow and config files. The ncc-release trigger change is the only modification to existing behavior — it replaces a manual dispatch with an equivalent tag-push trigger using the same tag format already in use.

indexzero and others added 2 commits April 14, 2026 12:26
Replace the manual release process (hand-edit changelog, bump version,
tag, push, dispatch ncc-release workflow) with release-it. On merge to
main, release.yml runs release-it --ci which bumps package.json, updates
doc/CHANGELOG.md, tags with bare semver, and publishes to npm with OIDC
provenance. The tag push triggers ncc-release.yaml (now tag-triggered
instead of workflow_dispatch) to build platform binaries and create the
GitHub Release.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Release workflow uses workflow_dispatch with an increment input
(patch/minor/major) instead of auto-triggering on push to main. The
pnpm release script dispatches the workflow remotely via gh CLI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@indexzero indexzero merged commit c44377b into main Apr 14, 2026
5 checks passed
@indexzero indexzero deleted the ci/release-it branch April 14, 2026 18:31
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