Skip to Content
Release process

Release process

Changes reach production through tagged releases, not by merging.

PR (conventional commits) -> Check PR -> merge to main -> staging -> release PR merged -> vX.Y.Z tag + GitHub Release -> production branch -> production

Staging and production

  • Pull requests run Check PR (see Quality gates). Add the Deploy Preview label to get a Vercel preview. scripts/vercel-ignore.sh builds a pull request only when it carries that label.
  • Merging to main deploys staging at staging.antmejia.com. Staging serves noindex metadata through NEXT_PUBLIC_APP_ENV=staging.
  • Production is the production branch, and Vercel builds it as the production deployment at antmejia.com. Only tagged releases reach it.

Releases

Release Please (.github/workflows/release-please.yml) keeps one release pull request open on main. It reads the conventional commits since the last release, bumps package.json, and updates CHANGELOG.md:

  • feat produces a minor version, fix a patch, and feat! or a BREAKING CHANGE footer a major one.
  • Types such as chore, docs, test, style, refactor, build and ci are hidden from the changelog.

Merging the release pull request creates the vX.Y.Z tag and a GitHub Release. In the same workflow run, the Promote to Production workflow (.github/workflows/promote-production.yml) fast-forwards the production branch to that tag. It runs in the same run because events created with the default GITHUB_TOKEN do not start other workflows.

If a RELEASE_PLEASE_TOKEN secret (a fine-grained personal access token) exists, release-please uses it, and CI then also runs on the release pull request. Without it, the release pull request works, but CI does not run on it.

Roll back

In GitHub: Actions, then Promote to Production, then Run workflow. Enter an older tag, for example v1.0.0, and tick force. Production is rebuilt from that tag. To go forward again, run it with the newer tag, or merge the next release pull request.

Promoting a previous deployment in the Vercel dashboard is a faster, temporary alternative.

Settings this depends on

  • Vercel project: Production Branch set to production, the staging.antmejia.com domain tracking the main branch, and a Preview environment variable NEXT_PUBLIC_APP_ENV=staging for the main branch.
  • GitHub: Settings, Actions, Allow GitHub Actions to create and approve pull requests turned on.

The repository README keeps a shorter version of this page.

Last updated on