Configuração de Pipeline CI/CD

Automatize compilação → teste → implantação com CodePipeline e SAM/CloudFormation IaC.

Se um desenvolvedor tivesse que fazer upload manualmente para o servidor, executar testes e implantar toda vez que fizesse uma alteracao no codigo, seria extremamente tedioso. CI/CD e a forma de automatizar todo esse processo. Voce simplesmente envia seu codigo para o Git e o restante — compilar, testar e implantar — acontece automaticamente.

As perguntas do exame DVA-C02 nessa area focam em como compilar, testar e implantar alteracoes de codigo automaticamente.

 

O que e CI/CD?

CI (Integracao Continua): Compila e testa o codigo automaticamente toda vez que varios desenvolvedores integram suas alteracoes. CD (Implantacao Continua): Implanta automaticamente em um servidor o codigo que passou nos testes.

Em termos simples, e um pipeline onde alteracao de codigo leva a teste automatico leva a implantacao automatica, tudo em sequencia.

 

Cadeia de servicos CI/CD da AWS

A AWS tem servicos dedicados para cada etapa do CI/CD, todos conectados pelo CodePipeline.

Fonte (CodeCommit/GitHub) → Compilacao (CodeBuild) → Implantacao (CodeDeploy) = Pipeline (CodePipeline)

 

CodeCommit

Um repositorio de codigo-fonte baseado em Git. E muito similar ao GitHub, mas totalmente gerenciado dentro da AWS. Suporta branches, pull requests (PRs), revisoes de codigo e gatilhos de eventos.

CodeBuild

Um servico de compilacao totalmente gerenciado. E responsavel por transformar codigo em executaveis ou pacotes de implantacao (compilar, executar testes, empacotar, etc.). Nao e necessario gerenciar servidores.

As fases de compilacao sao definidas em um arquivo buildspec.yml. install: Instalar ferramentas e bibliotecas necessarias pre_build: Tarefas de preparacao antes da compilacao (login Docker, configuracao do ambiente) build: Compilacao real e execucao de testes post_build: Tarefas pos-compilacao (envio de notificacoes, etiquetagem de imagens) artifacts: Especificar onde armazenar a saida da compilacao

CodeDeploy

Implanta o codigo compilado em servidores reais. O codigo pode ser implantado em instancias EC2, funcoes Lambda ou conteineres ECS.

O metodo de implantacao e definido em um arquivo appspec.yml. EC2/on-premises: Definir scripts de hook para executar antes e depois da instalacao Lambda: Definir quanto trafego transferir para a nova versao de cada vez (ex. incrementos graduais de 10%) ECS: Definicao de tarefa e configuracao do balanceador de carga

CodePipeline

Conecta todos os servicos acima (fonte, compilacao, implantacao) em um pipeline automatizado unificado. Pense nele como a esteira transportadora de uma fabrica automatizada.

Vincula automaticamente cada etapa: fonte → compilacao → teste → implantacao Etapas de aprovacao manual podem ser adicionadas quando necessario (ex. revisao de um responsavel antes de implantar em producao) Integra-se com EventBridge para acionar automaticamente o pipeline quando eventos especificos ocorrem

 

SAM (Serverless Application Model)

SAM e um framework para definir e implantar aplicacoes serverless como Lambda usando codigo (arquivos YAML). Em vez de clicar no console para configurar a infraestrutura, voce a define como codigo. Essa abordagem e chamada de IaC (Infraestrutura como Codigo).

sam build: Compila o codigo e prepara um pacote de implantacao. sam deploy: Implanta na AWS via CloudFormation. sam local invoke: Testa funcoes Lambda na sua maquina local sem implantar na AWS. Extremamente util durante o desenvolvimento. template.yaml: Um arquivo de configuracao que define declarativamente funcoes Lambda, API Gateway, tabelas DynamoDB e mais.

 

Pontos-chave do exame

"Arquivo que define as fases de compilacao" -- buildspec.yml (CodeBuild)

"Arquivo que define o metodo de implantacao" -- appspec.yml (CodeDeploy)

"Automacao Fonte para Compilacao para Implantacao" -- CodePipeline

"IaC serverless e testes locais" -- SAM

"Repositorio de codigo-fonte AWS baseado em Git" -- CodeCommit

"Empacotar saida de compilacao" -- CodeBuild artifacts

"Adicionar aprovacao manual ao pipeline" -- Etapa de aprovacao manual do CodePipeline

Entender a diferenca precisa entre buildspec.yml (como compilar) e appspec.yml (como implantar)

Voltar à lista do blog