Releases
All apps in this repo share one version from the root VERSION file:
| Consumer | How it gets the version |
|---|---|
Next.js (package.json) | bun run version:sync |
Docs (docs-website/package.json) | bun run version:sync |
| Go binary | internal/version/version.go (synced) + -ldflags in Docker/CI |
| Docker image | VERSION build-arg → binary + OCI label |
| Git tag / GitHub Release | Tag 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.
- Docker Hub multi-arch push (
linux/amd64,linux/arm64) to<DOCKERHUB_USERNAME>/email-link-host - Cross-compile Go binaries (linux/darwin/windows) with embedded version
- GitHub Release with binaries,
checksums.txt,VERSION,compose.yml,.env.example,site.example.json,Dockerfile
Required secrets / variables
| Name | Type | Purpose |
|---|---|---|
DOCKERHUB_USERNAME | Variable (recommended) | Docker Hub username (public; used in release notes) |
DOCKERHUB_TOKEN | Secret | Docker Hub access token |
DOCKERHUB_USERNAME | Secret (fallback) | Used only if the variable is unset |