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