🚀 Capítulo 16: CI/CD (Esteira de Produção) (Tema: Star Wars)

NOTE

Este capítulo utiliza a temática de Star Wars para explicar o CI/CD. Construir a Estrela da Morte exige uma esteira de produção automatizada: do projeto ao espaço sem falhas!


1. 🎯 Objetivo da Aula

Compreender os conceitos de Integração Contínua (CI) e Entrega Contínua (CD), entendendo como automatizar a esteira que leva o código do computador do programador até o servidor de produção.

2. 🏢 O Cenário Prático (Seu Desafio)

O Império Galáctico está construindo a nova Estrela da Morte.

  • Antigamente, eles esperavam os engenheiros terminarem todas as peças para tentar juntar tudo no final (Isso dava muitos erros de encaixe!).
  • Agora, eles usam uma Esteira Automatizada (Pipeline).
  • Toda vez que um engenheiro termina o desenho de uma peça e salva no sistema (Commit):
    1. O robô da esteira puxa o desenho e verifica se ele encaixa nas outras peças (Integração Contínua - CI).
    2. O robô roda testes de resistência simulados.
    3. Se passar, a peça é fabricada e enviada automaticamente para a Estrela da Morte no espaço (Entrega Contínua - CD).

Seu desafio é entender como funciona essa esteira para que a Estrela da Morte não seja destruída por um bug na exaustão térmica!

3. 🧠 Fundamentos: A Teoria Traduzida

CI/CD é o pilar da cultura DevOps. Ele automatiza as etapas de construção (Build), teste e implantação (Deploy) do software.

🔄 1. Integração Contínua (CI - Continuous Integration):

Os desenvolvedores enviam suas alterações de código para o repositório central (GitHub) várias vezes ao dia.

  • O que o robô faz: Ele baixa o código novo, junta com o antigo, compila o sistema e roda todos os testes automatizados de regressão.
  • Objetivo: Descobrir bugs de integração o mais rápido possível.

🚀 2. Entrega/Implantação Contínua (CD - Continuous Delivery/Deployment):

É o passo seguinte ao CI.

  • O que o robô faz: Se todos os testes do CI passaram, o robô pega o sistema pronto e o envia (faz o Deploy) para o servidor de produção (onde o usuário final acessa).
  • Objetivo: Colocar as novidades na mão do usuário de forma rápida e sem intervenção humana manual.

4. 📖 Exemplo Guiado: O Fluxo do Pipeline

Imagine o arquivo de configuração da sua esteira (Ex: no GitHub Actions). Ele diz ao robô o que fazer passo a passo:

# Arquivo de configuração simplificado
nome: Esteira da Estrela da Morte
 
ao_enviar_codigo:
  passo_1: Baixar o código novo
  passo_2: Instalar as ferramentas
  passo_3: Executar Testes Unitários (npm test)
  passo_4: Se passar, enviar para o Servidor (Deploy)

Se o Passo 3 falhar (um teste não passou), a esteira para e a peça não é enviada para o espaço. O engenheiro recebe um alerta para consertar!


5. 🛠️ Prática Obrigatória 1: CI ou CD?

Diga se a ação descrita pertence ao conceito de CI (Integração) ou CD (Entrega/Implantação):

  1. O robô executou 500 testes unitários para garantir que o novo código não quebrou nada.
  2. O robô pegou o arquivo .zip do sistema aprovado e o instalou no servidor da AWS automaticamente.
  3. O sistema acusou que o código do João entrou em conflito com o código da Maria logo após o commit.

6. 🛠️ Prática Obrigatória 2: O Calcanhar de Aquiles

A Estrela da Morte foi destruída porque os rebeldes jogaram um torpedo em uma pequena entrada de exaustão térmica.

  1. Se o Império tivesse testes E2E cobrindo todo o sistema na esteira de CI/CD, essa falha poderia ter sido detectada?
  2. Por que a automação precisa de bons testes para funcionar? O que acontece se a esteira de CD estiver ativa mas os testes forem fracos ou inexistentes?

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 16 Qualidade) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

mod_11_qualidade_e_testes_de_software/
├── capitulos/
│   ├── capitulo_16_cicd.md
│   └── codigos/
│       └── cap16/
│           └── pipeline_config.yml

💡 Checkpoint de Lógica

A esteira de CI/CD garante que o software em produção seja sempre o resultado de um processo rigoroso de testes. Ninguém “arrasta arquivo” para o servidor manualmente mais!

10. 🔥 Desafio de Fixação

Pesquise sobre as ferramentas de CI/CD mais usadas no mercado, como GitHub Actions, GitLab CI, Jenkins ou CircleCI.

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. CI (Foco em testes e integração).
  2. CD (Foco no deploy/entrega).
  3. CI (Detectou conflito de integração).

Capitulo Anterior | Proximo Capitulo