ZeroStarterRC
ZeroStarter

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

  1. 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.

  2. Changelog Configuration: Manage changelog.config.ts to configure changelog generation:

    • repo: Your GitHub repository URL
    • hideAuthorEmail: Set to true to 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 canarymain.

After merge, auto-release.yml workflow triggers automatically.

Update Changelog Branch

Workflow creates/updates changelog branch from main:

  • Generates CHANGELOG.md using changelogen --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:

  1. Go to Releases: Navigate to your repository's Releases page and click "Draft a new release"

  2. Create Tag: Create a new tag matching the version in package.json (e.g., v0.0.7)

  3. Copy from CHANGELOG.md: Copy the changelog entry for that version from CHANGELOG.md and paste it as the release notes

    The 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.