Formação AWS

← Todos os artigos

CodePipeline: primeiro fluxo de CI/CD na AWS com Docker e GitHub

ContainersPor Henrylle Maia · 15 out 2026 · 7 min de leitura

Um pipeline de CI/CD tira o deploy da máquina do desenvolvedor: você faz o push no GitHub e a AWS entrega a nova versão sozinha. Abaixo eu monto o primeiro fluxo do zero com o AWS CodePipeline, para um projeto em Node com React que roda em Docker e vai para o Elastic Beanstalk.

Gravei a aula em fevereiro de 2024. As telas do CodePipeline e do Beanstalk, os tipos de pipeline e os preços mudam com o tempo. Confira os tipos de pipeline na documentação oficial e os valores na página de preços.

O que o pipeline faz

Sem pipeline, o deploy sai da sua máquina direto para o ambiente na AWS. No dia a dia isso não escala, e por isso as empresas procuram um processo de deploy automatizado que não dependa da máquina do desenvolvedor.

O fluxo que montei é este: o projeto fica no GitHub; quando chega um push, o CodePipeline dispara, faz a integração contínua e a entrega contínua, e a nova versão chega ao Elastic Beanstalk. O CodePipeline é o serviço da AWS para essa finalidade.

Sem pipeline, os fontes vão direto para o Elastic Beanstalk; com pipeline, os fontes vão para o GitHub, que dispara o CodePipeline, e ele entrega no Elastic BeanstalkDo push ao deployfontesmáquina localsem pipeline: deploy diretoElasticBeanstalkGitHubCodePipeline
Sem pipeline, os fontes vão direto da máquina local para o Elastic Beanstalk (seta tracejada); com pipeline, vão para o GitHub, que dispara o CodePipeline, e ele entrega no Elastic Beanstalk
O caminho do push: o GitHub dispara o CodePipeline, que entrega a nova versão no Elastic Beanstalk, onde a imagem Docker é construídaPushcommit no GitHubCodePipelineetapa SourceDeployprovider Elastic BeanstalkElastic Beanstalkbuild do Dockerfile na EC2Aplicaçãonova versão no ar
O caminho do push: o GitHub dispara o CodePipeline, que entrega a nova versão no Elastic Beanstalk, onde a imagem Docker é construída

Como o projeto usa Docker, o build da imagem acontece dentro do Beanstalk. A versão da aplicação sobe para a área Application Versions, e quando ela é baixada na instância o Beanstalk faz o build com base no seu Dockerfile. Por isso o pipeline deste exemplo não tem etapa de build.

1Criar o ambiente no Elastic Beanstalk

Primeiro o ambiente, depois o pipeline. Os passos de criação eu cobri em outra aula, e o texto Elastic Beanstalk com Docker mostra o caminho com zip. O que escolhi aqui:

  • Aplicação: bia. O ambiente é para aplicação web, chamado Bia-pipeline-youtube.
  • Plataforma: Docker, na versão mais recente. Nos quadros aparece "Docker running on 64bit Amazon Linux 2023/4.2.1".
  • Preset: Single Instance, com capacidade 1.
  • Perfil da instância: uma role com a policy AWSElasticBeanstalkWebTier (você cria a role e escolhe essa policy). A minha se chama EC2 Beanstalk.
  • Rede: a rede padrão, com IP público e as zonas A, B e C.
  • Security group: o meu, BIA Web, que só tem regra de entrada na porta 80.
  • Instância: T3 Medium. O build acontece dentro da EC2, e uma máquina menor não aguenta. Não é uma instância da camada gratuita.

Monitoramento ficou no padrão, sem log stream e sem notificação, e o deploy acontece em 100% das instâncias de uma vez.

2O que o projeto precisa ter

O projeto é um fork da aplicação BIA, em Node com React, e já traz Dockerfile e docker-compose.yml. O Compose é peça fundamental para este pipeline:

yaml
services:
  server:
    build: .
    container_name: bia
    ports:
      - 80:8080

O serviço server faz o build do contexto atual, lê o Dockerfile e publica a porta 80 do ambiente na 8080 do container. Em um deploy manual você usaria um script, o eb deploy ou um zip. Aqui quero que cada alteração no repositório dispare o deploy sozinha.

3Criar o pipeline

No console do CodePipeline, clique em Create pipeline e configure:

  • Nome: bia-pipeline-youtube.
  • Tipo: V2.
  • Modo de execução: Superseded. É o padrão do console. Se vier outro push antes de o deploy terminar, a execução mais recente passa por cima da mais antiga. Queued executa uma de cada vez, em fila, e Parallel executa ao mesmo tempo.
  • Service role: nova. Deixe o CodePipeline criar a role que ele precisa. Variáveis e configurações avançadas dos artefatos ficam no padrão.
A tela de criação do pipeline com o tipo V2 marcado e o modo de execução Superseded
A tela de criação do pipeline com o tipo V2 marcado e o modo de execução Superseded

4Ligar o GitHub

Em Source provider, escolha o GitHub (versão 2). Em Connection, use uma conexão que já exista ou clique em conectar: abre uma janela, você cria o application, avança e escolhe os repositórios da sua conta que podem ser usados. Eu já tinha a conexão e já havia liberado alguns repositórios.

Depois escolha o repositório (o meu é bia-pipeline-yt) e o branch main. Em saída dos artefatos, deixei o padrão, CodePipeline default. Em trigger, não coloquei filtro.

5Pular o build e configurar o deploy

Na etapa Build provider você colocaria testes e build. No meu caso o build da imagem acontece no Beanstalk, então ignorei essa etapa.

No Deploy provider, escolha o AWS Elastic Beanstalk, a região, a aplicação bia e o ambiente Bia-pipeline-youtube. Confira o resumo e clique em Create pipeline.

O pipeline nasce com duas etapas, Source e Deploy, e já dispara sozinho: ele pegou o último commit que eu tinha feito no GitHub e fez o deploy para o Beanstalk. Esse primeiro deploy é sem push, só a criação do pipeline.

6Testar com um push

Na aplicação, o botão de adicionar era verde e o de fechar, preto. Alterei o Header.js: é um botão só, que alterna de estado: o texto de Fechar virou Close e o de adicionar virou Add, com o Add em azul e o Close em vermelho. Fiz commit e push com a mensagem "mudando para inglês".

O pipeline iniciou na hora: a etapa Source concluiu e o Deploy começou. O CodePipeline fica acompanhando o Beanstalk até o ambiente informar que a atualização terminou.

O pipeline logo após o push mudando para inglês: Source com status Succeeded e Deploy em andamento no AWS Elastic Beanstalk
O pipeline logo após o push mudando para inglês: Source com status Succeeded e Deploy em andamento no AWS Elastic Beanstalk

Quando o deploy terminou, abri a aplicação: o botão "Add" azul no lugar do verde. O histórico mostrou os dois deploys, o do primeiro disparo e o do push, ambos com sucesso.

A aplicação BIA antes do push (botão Fechar preto, em português) e depois (botão Add azul)
A aplicação BIA antes do push (botão Fechar preto, em português) e depois (botão Add azul)

7Desligar o que cobra

Acabou o teste, desalocar o ambiente: apague o pipeline e, no Beanstalk, encerre o ambiente para a instância parar de gerar custo.

Na aula eu disse que a camada gratuita traz 100 minutos de execução e que, passando disso, o custo por projeto é baixo (na gravação, em fevereiro de 2024, eu disse que achava que ficava em 1 ou 2 dólares por projeto). Esse número pode ter mudado: confira na página de preços.

Checklist

  • Ambiente do Elastic Beanstalk criado com plataforma Docker, Single Instance e uma instância com memória para o build (T3 Medium).
  • Projeto com Dockerfile e docker-compose.yml publicando a porta 80.
  • Pipeline V2 criado, com a service role nova e o modo de execução escolhido.
  • Conexão com o GitHub, repositório e branch main selecionados.
  • Etapa de build ignorada e deploy configurado para o Elastic Beanstalk.
  • Um push de teste que disparou o pipeline e mudou a aplicação.
  • Pipeline apagado e ambiente encerrado depois do teste.

Esse é o primeiro fluxo, o mais simples: quem quer ir além acrescenta etapas de build e testes ao mesmo desenho.

O que os alunos dizem

  • “A metodologia da Formação AWS mudou tudo pra mim. Foi ela que consolidou meu conhecimento, me deu segurança e me levou a conquistar a vaga de Engenheiro de Cloud dentro da minha própria empresa.”

    Harnon Ramalho, Engenheiro de Cloud

    Ver depoimento
  • “A Formação AWS me deu a prática, a segurança e a clareza que eu nunca encontrei em nenhum outro curso.”

    Jhon Wilame, SRE / DevOps Engineer

    Ver depoimento
  • “O melhor curso que eu fiz até hoje é o seu.”

    Jorge Bastos, Desenvolvedor Java Sênior (AWS + IA)

    Ver depoimento

Formação AWS

Aprenda AWS e IA na prática, com projeto real e acompanhamento. Converse com o time sobre a Formação AWS.

Agende uma conversa

Prefere assistir?

A aula completa (26 min) está no canal Domine AWS. O vídeo toca aqui mesmo.

Leia também

Compartilhe este post