Releasing
This repo uses Changesets for version orchestration and two publish paths:
the CLI (executor npm package plus its platform packages) and the
@executor-js/* library packages (core, sdk, and the public plugins).
Normal release flow
- Add a changeset in the PR that should ship:
bun run changeset
- Merge that PR to
main. .github/workflows/release.ymlopens or updates aVersion PackagesPR.- Merge the
Version PackagesPR. - The release workflow then does two things in parallel:
- Publishes every
@executor-js/*library package whose current version is not already on npm, viabun run release:publish:packages(seescripts/publish-packages.ts). - If
apps/cli/package.jsonbumped, tags the commit and dispatches.github/workflows/publish-executor-package.yml, which:- runs
bun run release:check - performs a full dry-run release build before publish
- publishes the CLI npm package under the correct dist-tag
- creates or updates the GitHub release with build artifacts
- runs
- Publishes every
Beta releases
Enter prerelease mode before starting a beta train:
bun run release:beta:start
That commits .changeset/pre.json into the repo and causes future release PRs to produce versions like 1.5.0-beta.0, 1.5.0-beta.1, and so on.
When the beta train is done:
bun run release:beta:stop
Stable versions publish to npm under latest.
Beta versions publish to npm under beta.
Local dry run
To build the full CLI release payload without publishing to npm or GitHub:
bun run release:publish:dry-run
That produces:
- platform archives in
apps/cli/dist - the packed wrapper tarball in
apps/cli/dist/release
To pack the @executor-js/* library packages without publishing:
bun run release:publish:packages:dry-run
Notes
- Changesets owns the published CLI version via
apps/cli/package.json. - Only
apps/cli/package.jsonshould change during release versioning; the rest of the workspace is not version-synced for release PRs. - Changesets changelog file generation is disabled; GitHub release notes are generated at publish time instead.
- Workspace
CHANGELOG.mdfiles are kept as compatibility files for the Changesets GitHub Action release PR flow. - The publish workflow supports either npm trusted publishing or an
NPM_TOKENsecret. - Re-running the publish workflow for the same tag is safe for packages that are already on npm; existing versions are skipped.