Ferramentas

Deploy Automatico com GitHub Actions: CI/CD Para Projetos Next.js

Vinicius Farias11 min de leitura587 visualizações
#GitHub Actions#CI/CD#DevOps#Next.js

Por Que Automatizar Deploy


Deploy manual e arriscado e lento. Com CI/CD, cada push para main faz deploy automaticamente — depois de rodar testes e build. Se algo falhar, nao vai para producao.

GitHub Actions: O Basico


Crie .github/workflows/deploy.yml:


name: Deploy

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
test-and-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'

  • run: npm ci
  • run: npm run lint
  • run: npm run build

Adicionando Testes


      - run: npm test
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }}

Preview Deploys para PRs


Com Vercel, cada PR ganha uma URL de preview automaticamente. Isso permite que reviewers vejam as mudancas ao vivo antes do merge.

Deploy para VPS


Se voce usa VPS em vez de Vercel:


  deploy:
needs: test-and-build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /app
git pull
npm ci
npm run build
pm2 restart all

Secrets e Variaveis


Nunca coloque credenciais no codigo. Use GitHub Secrets:



  1. Repositorio > Settings > Secrets and variables > Actions

  2. Adicione cada variavel de ambiente

  3. Referencie com ${{ secrets.NOME }}

Dicas de Performance



  • Use cache: 'npm' no setup-node para nao reinstalar dependencias

  • Rode lint e testes em paralelo com jobs separados

  • Use concurrency para cancelar workflows duplicados

Resultado


Com esse setup, cada push passa por lint, testes e build. Se tudo passar, faz deploy. Se falhar, voce recebe notificacao e producao fica intacta. Sem estresse.

Compartilhar este artigo: