Files
api-ubigeo/.gitea/workflows/deploy.yml
Gianpierre Mio 4bfc5a473e
All checks were successful
Deploy API-Ubigeo / deploy (push) Successful in 6m59s
fix(ci): exclude all .env* files from rsync delete
2026-04-09 09:24:57 -05:00

64 lines
2.0 KiB
YAML

name: Deploy API-Ubigeo
on:
push:
branches: [main]
jobs:
deploy:
runs-on: self-hosted
steps:
- 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 \
--exclude='.git' \
--exclude='node_modules' \
--exclude='dist' \
--exclude='.env*' \
./ /home/deployer/api-ubigeo/
- name: Build image
run: |
cd /home/deployer/api-ubigeo
docker build -t ubigeo-api:latest .
- name: Deploy containers
run: |
cd /home/deployer/api-ubigeo
docker compose -f docker-compose.production.yml down --remove-orphans
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
sleep 3
HTTP_CODE=$(curl -s -o /dev/null -w '%{http_code}' http://localhost:3200/api/v1/health 2>/dev/null || echo "000")
if [ "$HTTP_CODE" != "000" ] && [ "$HTTP_CODE" != "502" ] && [ "$HTTP_CODE" != "503" ]; then
echo "✅ Health check passed after $((i*3))s (HTTP $HTTP_CODE)"
exit 0
fi
echo "Attempt $i/15 - not ready yet (HTTP $HTTP_CODE)..."
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