Skip to content

ci: add package-scoped release automation - #13

Merged
ilbertt merged 6 commits into
mainfrom
codex/release-workflows
Oct 14, 2026
Merged

ilbertt merged 6 commits into
mainfrom
codex/release-workflows

Conversation

@ilbertt

@ilbertt ilbertt commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Parsh's independently versioned packages need release automation that targets their published pkg/ manifests and derives both the version and release history from commits for the package being shipped.

Adds a private @repo/internal-scripts workspace for release preparation, validation, PR body generation, and release notes. A shared git-cliff configuration selects Conventional Commits touching packages/<package>/**, ignores release housekeeping, and recognizes only the selected package's stable version tags. Git-cliff automatically infers patch bumps from fixes and other releasable changes, minor bumps from features, and minor bumps from breaking changes before 1.0.0, and major bumps from breaking changes at 1.0.0 or later.

The manual prepare-release action accepts only the package name and opens a PR updating its manifest, CHANGELOG.md, and Bun lockfile. Before the first package tag, git-cliff uses the existing manifest version as the bump baseline and includes the package's full history. Later releases require the manifest and last package tag to agree. Preparing a release fails when there are no new releasable package commits; changelogs are regenerated from history.

Pushing <package>-v<version> validates the version, tag target, and ancestry on main, runs checks/tests and a fresh build, generates package-specific release notes, publishes the selected package through npm OIDC with provenance, and creates a GitHub release using those notes. The shared prepare action reads Bun and Node versions from the root package.json (packageManager and engines.node), including the Node 24 pin and npm registry setup. Publishing reuses that setup. Contributor documentation covers tag conventions, npm trusted-publisher setup, and optional RELEASE_TOKEN for CI on bot-created PRs. AGENTS.md records the internal release package and commit-based semver convention.

Validation with Bun 1.4.3 and Node 24: bun fix:codestyle, bun check:all, bun run test, bun run build, and actionlint passed. Nineteen release integration tests cover automatic patch/minor/major inference on 0.x and 1.x versions, pre-1.0 breaking-change minor bumps, breaking-change footers, sibling commit/tag exclusion, current-tag release notes, initial releases, lockfile updates, empty releases, and invalid package/version/tag/ancestry inputs. Actual release CLI runs against the repository history confirmed that core, codegen, env, and files each advance to 0.1.0, with diffs restricted to their own manifest/changelog and bun.lock, and release notes matching the changelog. Existing package artifact dry runs and the fresh publish build were also verified.

Actual npm publishing has not been run; npm trusted publishers must be configured before the first automated release.

@ilbertt ilbertt changed the title ci: add package release workflows ci: add package-scoped release automation Oct 14, 2026
@ilbertt
ilbertt merged commit cf86168 into main Oct 14, 2026
12 checks passed
@ilbertt
ilbertt deleted the codex/release-workflows branch October 14, 2026 15:33
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