Ir para o conteúdo

DevOps - CI/CD

Estratégia Atual de Deploy

Backend

Plataforma: Railway

Processo: 1. Push para repositório Git 2. Railway detecta mudanças 3. Build automático (Go) 4. Deploy automático 5. Migrações manuais (quando necessário)

Configuração: - Build command: go build -o billings-ease-backend - Start command: ./billings-ease-backend - Variáveis de ambiente configuradas no Railway

Frontend Web

Plataforma: Railway

Processo: 1. Push para repositório Git 2. Railway detecta mudanças 3. Build automático (Vite) 4. Deploy estático 5. Servir arquivos de dist/

Configuração: - Build command: pnpm build - Output directory: dist - Variáveis de ambiente configuradas no Railway

Mobile

Plataforma: Expo / EAS Build

Processo: 1. Build manual via EAS Build 2. Distribuição via App Store / Google Play (futuro)

Status: Em construção

Pipelines Existentes

Status Atual

CI/CD: Não há pipelines automatizados configurados (GitHub Actions, GitLab CI, etc.)

Deploy: Manual via Railway (deploy automático em push)

Recomendações Futuras

GitHub Actions

Para Backend:

name: Backend CI/CD

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

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v4
      - run: go test ./...

  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v3
      - name: Deploy to Railway
        # Configurar deploy para Railway

Para Frontend:

name: Frontend CI/CD

on:
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
      - run: pnpm install --frozen-lockfile
      - run: pnpm test

  build:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
      - run: pnpm install --frozen-lockfile
      - run: pnpm build

Boas Práticas de Entrega

1. Versionamento

Usar versionamento semântico: - MAJOR.MINOR.PATCH (ex: 1.0.0) - Incrementar em cada release - Tag releases no Git

2. Testes Antes de Deploy

Backend:

# Executar testes
go test ./...

# Verificar build
go build -o billings-ease-backend

Frontend:

# Executar testes
pnpm test

# Verificar build
pnpm build

3. Migrações de Banco

Processo: 1. Criar migração SQL em migrations/ 2. Testar migração em ambiente de desenvolvimento 3. Aplicar migração em produção manualmente 4. Documentar mudanças

4. Rollback

Backend: - Railway mantém histórico de deploys - Rollback via interface do Railway

Frontend: - Rollback via Railway - Ou fazer novo deploy da versão anterior

5. Monitoramento

Recomendações: - Logs no Railway - Monitoramento de erros (Sentry, futuramente) - Monitoramento de performance

Ambientes de Staging

Status: Não implementado

Recomendação: Criar ambiente de staging para testes antes de produção.

Estrutura sugerida: - development - Local - staging - Testes - production - Produção

Deploy Manual

Backend

# 1. Fazer build local (teste)
go build -o billings-ease-backend

# 2. Push para repositório
git push origin main

# 3. Railway faz deploy automático
# 4. Verificar logs no Railway

Frontend

# 1. Build local (teste)
pnpm build

# 2. Verificar build
ls -la dist/

# 3. Push para repositório
git push origin main

# 4. Railway faz deploy automático

Mobile

# 1. Build via EAS
eas build --platform android
# ou
eas build --platform ios

# 2. Distribuir via App Store / Google Play

Decisões Pendentes

  • CI/CD automatizado: Implementar GitHub Actions ou similar
  • Ambiente de staging: Criar ambiente de testes
  • Monitoramento: Implementar ferramentas de monitoramento
  • Backup automático: Configurar backups automáticos do banco
  • Health checks: Implementar endpoints de health check

Referências