Fundamentos de CI/CD
CI/CD é a combinação de práticas de automação de desenvolvimento que permitem que as equipes de software entreguem mudanças de código com mais frequência e confiabilidade.
1. CI (Continuous Integration - Integração Contínua)
A Integração Contínua é a prática de automatizar a integração de mudanças de código de vários contribuidores em um único projeto de software.
- Build Automatizado: Toda vez que um código é enviado, o sistema tenta compilar a aplicação.
- Testes Automatizados: Suite de testes (Unitários, Integração) que rodam para garantir que o novo código não quebrou funcionalidades existentes.
- Análise de Código (Linting): Verificação automática de padrões de estilo e segurança (Horusec).
2. CD (Continuous Delivery/Deployment)
O CD expande a integração contínua ao implantar todas as alterações de código em um ambiente de teste ou de produção após o estágio de build.
Continuous Delivery (Entrega Contínua)
As alterações são testadas e preparadas automaticamente para produção, mas o deploy final exige uma aprovação humana.
Continuous Deployment (Implantação Contínua)
Toda alteração que passa em todas as etapas do pipeline de produção é lançada automaticamente para os usuários finais.
3. Benefícios
- Redução de Risco: Bugs são encontrados mais cedo no ciclo de desenvolvimento.
- Velocidade: O tempo entre "tive uma ideia" e "o usuário está usando" é drasticamente reduzido.
- Qualidade: Garante que o código em produção sempre passou pelos critérios mínimos de qualidade definidos pelo time.
4. No nosso projeto
Utilizamos pipelines automatizados (Cloud Build / Github Actions) que realizam as seguintes etapas:
- Instalação de dependências.
- Execução de Linters e Prettier.
- Execução de testes automatizados.
- Análise de segurança com Horusec.
- Geração de build (Vite/Webpack).
- Deploy automático nos ambientes de Dev e Staging.
Como fazer vs Como não fazer
✅ Como fazer
- Mantenha Pull Requests pequenos para facilitar a integração e o review.
- Corrija falhas no pipeline imediatamente. Um pipeline quebrado impede o time todo de avançar.
- Escreva testes significativos que realmente protejam o sistema contra regressões.
❌ Como não fazer
- Pular etapas do pipeline localmente (
--no-verifyno git commit). - Ignorar avisos de segurança ou de lint.
- Fazer deploy manual em produção sem passar pelo pipeline oficial.