Files
VPS 4 Deploy Agent 7ffaead255
build-and-promote / build (push) Failing after 7m7s
build-and-promote / promote (push) Has been skipped
feat(deploy): padroniza rx p/ Build Once->Promote->Deploy (CI registry, compose.prod, badge/health)
- .gitea/workflows/build.yml: push->build rx-scoreodonto:<sha> no registry; tag->promote+deploy
- docker-compose.prod.yml: image do registry, APP_VERSION/GIT_COMMIT em runtime
- deploy-prod.sh: VPS1 pull + up --no-build (antigo vira deploy-prod-legado-webhook.sh)
- /api/health usa APP_VERSION (tag) com fallback version.txt; badge no canto
- webhook 9003 aposentado (gatilho agora e CI/tag)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 02:39:30 +02:00

50 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# =============================================================================
# Deploy por TAG na PRODUÇÃO (VPS1) — rx.scoreodonto.com (modelo build-once/promote)
# Puxa a imagem versionada do registry do Gitea e sobe, SEM build.
#
# Uso (NA VPS1): ./deploy-prod.sh v2.2.0 <commit>
# Rollback: ./deploy-prod.sh <tag-anterior> <commit-anterior>
#
# Pré-requisitos (uma vez): docker login git.clube67.com (token read:package).
# Substitui o modelo antigo (webhook 9003 → build na VPS4 → save/rsync/load).
# =============================================================================
set -euo pipefail
TAG="${1:-}"
COMMIT="${2:-dev}"
if [ -z "$TAG" ]; then
echo "uso: ./deploy-prod.sh <vX.Y.Z> [commit] (ex.: ./deploy-prod.sh v2.2.0 ab12cd3)"
echo "tags disponíveis: git.clube67.com → Packages → rx-scoreodonto"
exit 1
fi
export DOCKER_HOST=unix:///run/user/1000/docker.sock
export RX_TAG="$TAG"
export RX_COMMIT="$COMMIT"
cd "$(dirname "$0")"
FILES="-f docker-compose.yml -f docker-compose.prod.yml"
echo "──────────────────────────────────────────────────────────────"
echo " Deploy rx.scoreodonto.com → PRODUÇÃO tag: $TAG commit: $COMMIT"
echo " Versão exibida (/api/health → badge) injetada em runtime = $TAG"
echo " Volumes preservados: uploads/ processed/ data/ dental-server/updates/ (auto-update dos clients)"
echo "──────────────────────────────────────────────────────────────"
echo "[1/3] pull da imagem $TAG ..."
docker compose $FILES pull app
echo "[2/3] subindo (sem build) ..."
docker compose $FILES up -d --no-build app
echo "[3/3] verificação (aguardando boot) ..."
sleep 12
echo -n " health no ar: "
curl -s --max-time 10 https://rx.scoreodonto.com/api/health || echo "(ainda subindo — confira em alguns segundos)"
echo
docker logs rx_scoreodonto_app --tail 5 2>&1 | grep -iE 'VERSION|listen|porta|ready' || true
echo
echo "✅ Deploy concluído (tag $TAG)."
echo " Rollback: ./deploy-prod.sh <tag-anterior> <commit-anterior>"