Release Management
Automate releases and changelog generation.
Overview
ZeroStarter uses an automated release workflow that manages versioning, changelog generation, and GitHub releases. The workflow operates with canary (development) and main (production) branches, automatically creating draft PRs for review.
Prerequisites
-
Enable the following GitHub setting for the workflow to function:
Settings → Actions → General → Workflow permissions
- ✅ Allow GitHub Actions to create and approve pull requests
This setting is required for the automated workflows to create draft PRs.
-
Changelog Configuration: Manage
changelog.config.tsto configure changelog generation:repo: Your GitHub repository URLhideAuthorEmail: Set totrueto hide author emails in changelog
// changelog.config.ts export default { repo: "https://github.com/nrjdalal/zerostarter", }
Workflow
This project uses an automated release workflow with canary (development) and main (production) branches. All PRs are created as drafts for manual review.
Development Branch (canary)
Push changes to canary triggers auto-canary-into-main.yml workflow.
Auto-creates draft PR:
- Title:
ci(release): 🚀 merge canary into main - Head:
canary→ Base:main
Production Branch (main)
Manually review and merge the draft PR from canary → main.
After merge, auto-release.yml workflow triggers automatically.
Update Changelog Branch
Workflow creates/updates changelog branch from main:
- Generates
CHANGELOG.mdusingchangelogen --bump - Bumps version in
package.json - Commits:
ci(changelog): update changelog and bump version
Changelog PR to Canary
If changes detected, auto-creates draft PR:
- Title:
ci(changelog): 📖 update changelog and bump version - Head:
changelog→ Base:canary
Back to Development
Manually review and merge the changelog PR to sync version and changelog back to canary.
Build Checks
auto-check-build.yml runs on pushes to canary and PR updates, executing lint, build, and type checks.
GitHub Releases
changelogen generates CHANGELOG.md with categorized changes, commit links, and contributors. When creating a GitHub release:
-
Go to Releases: Navigate to your repository's Releases page and click "Draft a new release"
-
Create Tag: Create a new tag matching the version in
package.json(e.g.,v0.0.7) -
Copy from CHANGELOG.md: Copy the changelog entry for that version from
CHANGELOG.mdand paste it as the release notesThe changelog entry includes:
- Version header with compare changes link
- Categorized changes (📖 Documentation, 🏡 Chore, etc.)
- Commit links with hashes
- Contributor credits
Note: Don't use GitHub's "Generate release notes" feature. The CHANGELOG.md generated by changelogen already contains the properly formatted release notes based on conventional commits.