- build.yml dividido em 2 jobs por ref:
• build (só push na main): builda 1x e publica por COMMIT (:<sha> + :latest), sem APP_VERSION.
• promote (só tag vX.Y.Z): re-tagueia :<sha> -> :vX.Y.Z via 'docker buildx imagetools create'
(SEM rebuild), valida integridade (imagem do commit existe; digest :versao == :commit;
front+back do mesmo commit) e deploya na VPS1. Falha se o commit não foi pushado.
- Versão semântica nasce da TAG e é injetada no deploy em runtime (compose.prod).
- Removidos frontend/constants.ts e update-version.js (fim do APP_VERSION manual).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- build: fixa COMPOSE_PROJECT_NAME=scoreodontocom (imagem buildada batia com nome errado no tag/push → carimbo da Etapa 3 vazava)
- novo job deploy: só em tags v*, SSH VPS4->VPS1 roda deploy-prod.sh (push na main não deploya)
- deploy.md: Metade B + roadmap Etapa 6 = FEITO
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
.gitea/workflows/build.yml — em push na main + tags v*, builda backend+frontend
com carimbo de versão e publica no registry (sem deploy). Login tolerante
(secret REGISTRY_TOKEN se existir; senão credencial do host). Retry p/ 499.
Runner self-hosted 'vps4-builder' (modo host) registrado na VPS4.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>