Deploy v2 — release versioning + visible deploy jobs + manual rollback #105

Merged
developer merged 2 commits from feature/release-versioning into development 2026-06-22 05:40:55 +00:00
Owner

Deploy v2 — release versioning, visible deploy stages, and manual rollback. Follows the Stage 18 machinery (PR #103) per owner feedback.

Versioning (single semver, Go ldflags)

  • New pkg/version.Version (default dev) set at link time via -ldflags "-X scrabble/pkg/version.Version=<tag>" from each service Dockerfile's VERSION build-arg.
  • The deploy passes git describe --tags → the binary version surfaces as the service.version OpenTelemetry resource attribute (Grafana/Tempo are version-aware) alongside the existing SPA About version.
  • Releases are git tags vX.Y.Z on master.

Visible deploy stages

  • prod-deploy.yaml is now four sequential jobs — build → deploy-main → deploy-bot → verify — so the rollout shows as a chain in the Actions UI (the per-service rolling stays in the deploy-main log).

Manual rollback

  • New prod-rollback.yaml (separate manual workflow). Leave target_version blank to roll back to the previous deployed version (the host now tracks DEPLOYED_TAG + PREVIOUS_TAG), or pick a release tag. Re-deploys an already-published image rolling + health-gated — image-only, no rebuild, no DB migration.

Notes

  • prod-deploy/prod-rollback are master-only workflow_dispatch — not triggered by this PR; YAML + the version chain (ldflags injection) verified locally.
  • Test contour stays green; the build now stamps VERSION (the SHA on development, the tag in prod).
Deploy v2 — release versioning, visible deploy stages, and manual rollback. Follows the Stage 18 machinery (PR #103) per owner feedback. ### Versioning (single semver, Go ldflags) - New `pkg/version.Version` (default `dev`) set at link time via `-ldflags "-X scrabble/pkg/version.Version=<tag>"` from each service Dockerfile's `VERSION` build-arg. - The deploy passes `git describe --tags` → the binary version surfaces as the **`service.version`** OpenTelemetry resource attribute (Grafana/Tempo are version-aware) alongside the existing SPA About version. - Releases are git tags `vX.Y.Z` on `master`. ### Visible deploy stages - `prod-deploy.yaml` is now four sequential jobs — **build → deploy-main → deploy-bot → verify** — so the rollout shows as a chain in the Actions UI (the per-service rolling stays in the deploy-main log). ### Manual rollback - New **`prod-rollback.yaml`** (separate manual workflow). Leave `target_version` blank to roll back to the previous deployed version (the host now tracks `DEPLOYED_TAG` + `PREVIOUS_TAG`), or pick a release tag. Re-deploys an already-published image rolling + health-gated — image-only, no rebuild, no DB migration. ### Notes - prod-deploy/prod-rollback are master-only workflow_dispatch — not triggered by this PR; YAML + the version chain (ldflags injection) verified locally. - Test contour stays green; the build now stamps VERSION (the SHA on development, the tag in prod).
developer added 2 commits 2026-06-22 05:37:34 +00:00
pkg/version.Version (default "dev") is set at link time via -ldflags from each
service Dockerfile's VERSION build-arg, which the deploy passes as the git tag
(git describe --tags). It surfaces as the OpenTelemetry service.version resource
attribute (so Grafana/Tempo are version-aware), alongside the SPA's existing
About version. Adds the VERSION build-arg to the backend/gateway/validator/bot
compose builds and a serviceResource test covering service.name + service.version.
feat(deploy): visible prod-deploy jobs + manual prod-rollback
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 11s
CI / integration (pull_request) Successful in 16s
CI / ui (pull_request) Successful in 57s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m23s
c59e522732
- prod-deploy.yaml is now four visible sequential jobs (build -> deploy-main ->
  deploy-bot -> verify) so the rollout stages show in the Actions UI; the
  per-service rolling stays in the deploy-main log.
- prod-rollback.yaml: a separate manual workflow_dispatch. Leave target_version
  blank to roll back to the previous deployed version (the host now tracks
  DEPLOYED_TAG + PREVIOUS_TAG), or pick a release tag. Re-deploys an already
  published image rolling + health-gated, image-only (no rebuild, no DB migration).
- prod-deploy.sh tracks the previous tag (commit_tag) for the blank-input rollback.
- Docs: ARCHITECTURE §13 + deploy/README runbook cover versioning + rollback.
owner approved these changes 2026-06-22 05:40:24 +00:00
developer merged commit 40d8f06588 into development 2026-06-22 05:40:55 +00:00
developer deleted branch feature/release-versioning 2026-06-22 05:40:55 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/scrabble-game#105