fix: Atualiza a porta correta no pipeline para o microsserviço ETL #29
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy BUFFS API to AWS EC2 | |
| on: | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout código | |
| uses: actions/checkout@v4 | |
| - name: Checkout ETL Worker | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: AgroCore-co/buffs-etl-worker | |
| path: buffs-etl-worker | |
| token: ${{ secrets.GH_PAT }} | |
| - name: Configurar Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build das imagens Docker | |
| run: | | |
| docker build -t buffs-api:latest . | |
| docker build -t buffs-etl-worker:latest ./buffs-etl-worker | |
| docker save buffs-api:latest buffs-etl-worker:latest | gzip > /tmp/buffs-api-image.tar.gz | |
| echo "Tamanho da imagem comprimida: $(du -sh /tmp/buffs-api-image.tar.gz | cut -f1)" | |
| - name: Criar pacote do código-fonte | |
| run: | | |
| tar -czf /tmp/deploy.tar.gz \ | |
| --exclude='.git' \ | |
| --exclude='node_modules' \ | |
| --exclude='.env' \ | |
| --exclude='dist' \ | |
| --exclude='coverage' \ | |
| --exclude='logs' \ | |
| . | |
| cp /tmp/deploy.tar.gz deploy.tar.gz | |
| cp /tmp/buffs-api-image.tar.gz buffs-api-image.tar.gz | |
| - name: Copiar arquivos para EC2 | |
| uses: appleboy/scp-action@v0.1.7 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ec2-user | |
| key: ${{ secrets.EC2_SSH_KEY }} | |
| port: 22 | |
| source: 'deploy.tar.gz,buffs-api-image.tar.gz' | |
| target: '/home/ec2-user/' | |
| - name: Deploy via Docker Compose | |
| uses: appleboy/ssh-action@v1.0.3 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ec2-user | |
| key: ${{ secrets.EC2_SSH_KEY }} | |
| port: 22 | |
| command_timeout: 10m | |
| script: | | |
| set -e | |
| cd /home/ec2-user | |
| # Garantir que o Docker está rodando | |
| sudo systemctl start docker 2>/dev/null || true | |
| # Instalar docker-compose se não existir | |
| if ! command -v docker-compose &> /dev/null; then | |
| echo "Instalando docker-compose..." | |
| sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose | |
| sudo chmod +x /usr/local/bin/docker-compose | |
| fi | |
| # Backup do .env | |
| if [ -f buffs-api/.env ]; then | |
| cp buffs-api/.env /tmp/.env.backup | |
| fi | |
| # Limpar e recriar diretório (preserva .env) | |
| rm -rf buffs-api | |
| mkdir -p buffs-api | |
| # Extrair código-fonte | |
| tar -xzf deploy.tar.gz -C buffs-api/ | |
| rm deploy.tar.gz | |
| # Restaurar .env | |
| if [ -f /tmp/.env.backup ]; then | |
| mv /tmp/.env.backup buffs-api/.env | |
| fi | |
| cd buffs-api | |
| # Verificar .env obrigatório | |
| [ ! -f .env ] && echo "ERRO: .env não encontrado na EC2" && exit 1 | |
| # Parar containers antigos ANTES de limpar (libera as imagens em uso) | |
| docker-compose -f infra/docker-compose.prod.yml down --remove-orphans 2>/dev/null || true | |
| # Liberar espaço em disco antes de carregar a imagem | |
| echo "Limpando espaço em disco..." | |
| docker image prune -af 2>/dev/null || true | |
| docker container prune -f 2>/dev/null || true | |
| docker volume prune -f 2>/dev/null || true | |
| echo "Espaço disponível: $(df -h / | tail -1 | awk '{print $4}')" | |
| # Carregar imagem Docker pré-construída (evita buildx no servidor) | |
| echo "Carregando imagem Docker..." | |
| docker load < /home/ec2-user/buffs-api-image.tar.gz | |
| rm /home/ec2-user/buffs-api-image.tar.gz | |
| # Subir todos os serviços (sem --build, usa imagens já carregadas) | |
| docker-compose -f infra/docker-compose.prod.yml up -d --no-build | |
| # Aguardar a API inicializar | |
| echo "Aguardando API inicializar..." | |
| sleep 15 | |
| # Health check | |
| curl -f http://localhost:3001/health || (docker-compose -f infra/docker-compose.prod.yml logs --tail=50 buffs-api && exit 1) | |
| echo "✅ Deploy concluído com sucesso!" |