CI/CD com GitHub Actions

Automatizar deployments com CI/CD melhora drasticamente a produtividade e reduz erros humanos.

Workflow Básico

# .github/workflows/deploy.yml
name: Deploy

on:
    push:
        branches: [ main ]

jobs:
    build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        
        - name: Setup Node.js
            uses: actions/setup-node@v3
            with:
                node-version: '18'
        
        - name: Install dependencies
            run: npm ci
        
        - name: Run tests
            run: npm test
        
        - name: Build Docker image
            run: docker build -t myapp:${{ github.sha }} .

Deploy

deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
    - name: Deploy to production
        uses: appleboy/ssh-action@master
        with:
            host: ${{ secrets.HOST }}
            username: ${{ secrets.USERNAME }}
            key: ${{ secrets.SSH_KEY }}
            script: |
                docker pull myapp:${{ github.sha }}
                docker-compose up -d