ci: Instala docker compose caso não exista #18
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: Criar pacote para deploy | |
| run: | | |
| tar -czf /tmp/deploy.tar.gz \ | |
| --exclude='.git' \ | |
| --exclude='node_modules' \ | |
| --exclude='.env' \ | |
| --exclude='dist' \ | |
| --exclude='coverage' \ | |
| --exclude='logs' \ | |
| . | |
| mv /tmp/deploy.tar.gz deploy.tar.gz | |
| - name: Copiar pacote 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' | |
| 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 | |
| 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 | |
| sudo curl -L "https://github.com/docker/compose/releases/latest/download/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 (se existirem) | |
| docker-compose -f infra/docker-compose.prod.yml down --remove-orphans 2>/dev/null || true | |
| # Build e subir todos os serviços | |
| docker-compose -f infra/docker-compose.prod.yml up -d --build | |
| # Limpar imagens antigas não utilizadas | |
| docker image prune -f | |
| # 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 buffs-api && exit 1) | |
| echo "✅ Deploy concluído com sucesso!" |