Aula 05 - Integração Contínua (CI) ⚙️
Objetivo
Objetivo: Entender o conceito de Integração Contínua (CI), por que ela é fundamental para o DevOps e como as ferramentas automatizam o processo de build e teste cada vez que um commit é feito.
1. O que é Integração Contínua (CI)? 🔄
A Integração Contínua é a prática de integrar o código de todos os desenvolvedores em um repositório compartilhado várias vezes ao dia.
Cada integração é verificada por um Build Automatizado e por Testes Automatizados, permitindo que as equipes detectem problemas rapidamente.
O Problema do "Integration Hell" 😵💫
Antes do CI, os desenvolvedores trabalhavam isolados por semanas. Na hora de juntar tudo (merge), o sistema quebrava de tantas formas que levava dias para consertar. O CI resolve isso ao integrar pequenas mudanças constantemente.
2. O Pipeline de CI 🏗️
Um pipeline de CI geralmente segue este fluxo:
graph LR
Code(["Código"]) --> Commit(["Commit/Push"])
Commit --> Build(["Build/Compilação"])
Build --> Unit(["Testes Unitários"])
Unit --> Static(["Análise Estática"])
Static --> Artifact(["Artefato Gerado"])
Automação de CI (Termynal) 💻
git push origin develop Iniciando Pipeline... Rodando Pytest... [PASSED] Análise de Lint... [SUCCESS] Geração de Imagem: v1.0.5 Status: Pipeline Completo! ✅
- Commit/Push: O gatilho que inicia o processo.
- Build: O servidor baixa as dependências e o código é transformado em algo executável (se necessário).
- Testes Unitários: Scripts que testam as menores partes do código (funções e classes).
- Análise Estática (Lint): Verifica se o código segue boas práticas e padrões de estilo.
- Artefato: O resultado final (um arquivo .bin, uma imagem Docker, etc) pronto para ser testado mais a fundo.
3. Benefícios do CI 💎
- Feedback Rápido: O desenvolvedor sabe em minutos se quebrou algo.
- Qualidade do Código: Erros não chegam a branches estáveis.
- Confiança: O time sabe que o código no repositório está "saudável".
- Documentação Viva: Os testes automatizados explicam como o sistema deveria funcionar.
4. Ferramentas Populares de CI 🛠️
Existem muitas ferramentas no mercado. As mais usadas hoje são:
- GitHub Actions: Integrado diretamente no GitHub (vamos focar nele!).
- Jenkins: O "vovô" do CI, muito poderoso e customizável.
- GitLab CI: Integrado ao GitLab.
- CircleCI / Travis CI: Soluções de mercado focadas em facilidade de uso.
5. Prática Sugerida: O Primeiro Pipeline 🚀
Imagine que você tem um projeto Python. Um arquivo de workflow do GitHub Actions (.github/workflows/main.yml) seria assim:
name: CI Pipeline
on: [push] # Gatilho
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Instalar Dependências
run: pip install -r requirements.txt
- name: Rodar Testes
run: pytest
6. Exercício de Fixação 🧠
- Qual a diferença entre um Build Manual e um Build de CI?
- O que acontece se um teste falhar durante o pipeline de CI?
- Por que o feedback rápido é considerado a maior vantagem do CI?
Próxima Aula: Agora que o código está integrado e testado, como levamos ele para o usuário? Vamos falar de Entrega Contínua (CD)! 🚚