Skip to main content

Releases

All apps in this repo share one version from the root VERSION file:

ConsumerHow it gets the version
Next.js (package.json)bun run version:sync
Docs (docs-website/package.json)bun run version:sync
Go binaryinternal/version/version.go (synced) + -ldflags in Docker/CI
Docker imageVERSION build-arg → binary + OCI label
Git tag / GitHub ReleaseTag must be v$(cat VERSION)

Bump and release

bun run version:set 1.2.0 # writes VERSION + syncs all apps
git add VERSION package.json docs-website/package.json internal/version/version.go
git commit -m "chore: release 1.2.0"
git tag v1.2.0
git push origin main v1.2.0

Or sync only (after editing VERSION by hand):

bun run version:sync

Pushing tag v* runs .github/workflows/release.yml, which fails if the tag does not match VERSION.

  1. Docker Hub multi-arch push (linux/amd64, linux/arm64) to <DOCKERHUB_USERNAME>/email-link-host
  2. Cross-compile Go binaries (linux/darwin/windows) with embedded version
  3. GitHub Release with binaries, checksums.txt, VERSION, compose.yml, .env.example, site.example.json, Dockerfile

Required secrets / variables

NameTypePurpose
DOCKERHUB_USERNAMEVariable (recommended)Docker Hub username (public; used in release notes)
DOCKERHUB_TOKENSecretDocker Hub access token
DOCKERHUB_USERNAMESecret (fallback)Used only if the variable is unset