| name | dispatch-release |
| description | Dispatch a release using GitHub Actions. Use when asked to create a release, publish to npm, or start the release process. |
Dispatch Release
Overview
The Cartridge Controller uses a two-phase release process:
- Dispatch: Creates a release preparation PR with version bumps
- Publish: Merges PR triggers npm publish and GitHub release
Release Types
| Type | Tag | Use Case |
|---|
latest | Production | Stable releases for general use |
prerelease | Beta/RC | Testing releases before stable |
Dispatching a Release
Step 1: Determine Version
Follow semantic versioning:
- Major (1.0.0): Breaking changes
- Minor (0.1.0): New features, backward compatible
- Patch (0.0.1): Bug fixes, backward compatible
Check current version:
jq -r '.version' packages/controller/package.json
Step 2: Dispatch via GitHub CLI
gh workflow run release-dispatch.yml \
-f version="X.Y.Z" \
-f tag="latest"
gh workflow run release-dispatch.yml \
-f version="X.Y.Z-beta.1" \
-f tag="prerelease"
Step 3: Monitor Workflow
gh run watch
gh run list --workflow=release-dispatch.yml
Step 4: Review the Release PR
The workflow creates:
- A PR titled "Prepare release: X.Y.Z" (or "Prepare prerelease: X.Y.Z")
- A draft GitHub release
gh pr list --head prepare-release
gh pr list --head prepare-prerelease
gh pr view <PR_NUMBER>
The changelog will be auto-generated by the changelog-generation.yml workflow.
Step 5: Merge to Publish
Once the release PR is reviewed and approved:
gh pr merge <PR_NUMBER> --merge
This triggers release.yml which:
- Builds all packages
- Publishes to npm (
@cartridge/controller, @cartridge/connector)
- Finalizes the GitHub release with changelog
Verifying the Release
After merge, verify:
npm view @cartridge/controller version
npm view @cartridge/connector version
gh release list --limit 5
gh release view v<VERSION>
Workflow Files
| File | Purpose |
|---|
release-dispatch.yml | Initiates release, creates PR and draft release |
changelog-generation.yml | Auto-generates changelog for release PRs |
release.yml | Publishes to npm when release PR merges |
Common Scenarios
Cancel a Release
If you need to cancel before merge:
gh pr close <PR_NUMBER>
gh release delete v<VERSION> --yes
Hotfix Release
For urgent fixes:
- Create fix on main (or cherry-pick)
- Dispatch patch version release
- Fast-track review and merge
Failed Release
If npm publish fails:
- Check the
release.yml workflow logs
- Fix the issue
- Re-run the workflow or manually dispatch
release.yml
gh workflow run release.yml
Example: Full Release Flow
jq -r '.version' packages/controller/package.json
gh workflow run release-dispatch.yml -f version="0.10.0" -f tag="latest"
sleep 30
gh pr list --head prepare-release
gh pr view --web
gh pr merge --merge
npm view @cartridge/controller version
Required Permissions
- GitHub token with
contents: write and pull-requests: write
- npm token (configured as
NPM_TOKEN secret)
CREATE_PR_TOKEN secret for PR creation