name: Deploy WiFi-ETL Prod on: push: branches: - main jobs: deploy: runs-on: self-hosted steps: - name: Clone/Update código run: | mkdir -p /opt/wifi-etl cd /opt/wifi-etl if [ -d .git ]; then echo "Atualizando código..." git pull origin main else echo "Clonando projeto..." git clone https://seu-gitea.com/seu-usuario/wifi-etl.git /opt/wifi-etl cd /opt/wifi-etl fi echo "✓ Código atualizado" - name: Copiar .env run: | cp /home/desenvolvimento/.envs/wifi_etl/.env /opt/wifi-etl/.env echo "✓ .env copiado" - name: Build e deploy container run: | cd /opt/wifi-etl docker compose -f infra/docker-compose.yml up -d --build echo "✓ Container iniciado" - name: Aguardar inicialização run: sleep 5 - name: Validar saúde - CRON run: | echo "--- Verificando CRON ---" docker exec wifi_etl_worker ps aux | grep cron || echo "⚠ Cron pode não estar rodando" - name: Validar saúde - Database run: | echo "--- Verificando conexão com banco ---" docker exec wifi_etl_worker python3 << 'PYEOF' import psycopg2 import os import sys try: conn = psycopg2.connect( host=os.getenv('DB_HOST'), port=int(os.getenv('DB_PORT', '5432')), dbname=os.getenv('DB_NAME'), user=os.getenv('DB_USER'), password=os.getenv('DB_PASSWORD'), connect_timeout=5 ) cur = conn.cursor() cur.execute("SELECT version();") version = cur.fetchone()[0] print(f"✓ Banco de dados conectado") print(f" {version[:60]}") cur.close() conn.close() except Exception as e: print(f"✗ Erro de conexão: {e}") sys.exit(1) PYEOF - name: Verificar logs iniciais if: always() run: | echo "--- Últimos logs do container ---" docker logs --tail 20 wifi_etl_worker || true