diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index b8304fa..d13a264 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -11,6 +11,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Backup current image + run: | + docker tag ubigeo-api:latest ubigeo-api:rollback 2>/dev/null || true + - name: Sync source run: | rsync -a --delete \ @@ -32,6 +36,8 @@ jobs: docker compose -f docker-compose.production.yml up -d - name: Health check + id: health + continue-on-error: true run: | echo "Waiting for API-Ubigeo to start..." for i in $(seq 1 15); do @@ -45,4 +51,14 @@ jobs: done echo "❌ Health check failed after 45s" docker logs ubigeo-api --tail 50 + exit 1 + + - name: Rollback on failure + if: steps.health.outcome == 'failure' + run: | + echo "❌ Deploy failed, rolling back..." + docker tag ubigeo-api:rollback ubigeo-api:latest 2>/dev/null || true + cd /home/deployer/api-ubigeo + docker compose -f docker-compose.production.yml up -d --force-recreate + echo "🔄 Rollback complete" exit 1 \ No newline at end of file