1
resposta

[Dúvida] Atualização da Versão Implantada

Depois que subimos a primeira versão é comum do dia-a-dia precisamos atualizar as versões, encontrei nas minhas pesquisas o seguinte passo a passo:

  • Depois que o código estiver pronto, rodar o docker build e o docker tag para marcar a nova imagem

  • Enviar a nova imagem para o Amazon ECR com o comando do docker push sendo que essa nova imagem precisa ter o mesmo nome e tag que ficou configurada no Terraform para que o Elastic Beanstalk possa encontrá-la.

  • Atualizar o arquivo Dockerrun.aws.json com o nome da nova imagem

  • Gerar o novo zip pós alteração no Dockerrun.aws.json

  • Executar o comando terraform apply

  • Atualizar com o aws elasticbeanstalk update-environment com a versão nova

Como esse processo pode ser mais automatizado?

1 resposta

Oii, Micaely. Tudo bem?

Para automatizar esse processo, você pode usar ferramentas de Integração Contínua / Entrega Contínua (CI/CD).

A ideia é que, ao invés de executar manualmente cada um desses passos, você configure uma pipeline de CI/CD que faça isso automaticamente sempre que houver uma mudança no código.

Por exemplo, você pode usar o Jenkins (ele é um servidor de automação de código aberto), ou o AWS CodePipeline, uma ferramenta de entrega contínua da própria Amazon.

Vou deixar abaixo um exemplo de como você poderia configurar uma pipeline de CI/CD usando o Jenkins:

  • No Jenkins, crie um novo job.
  • Configure o job para monitorar o seu repositório de código. Sempre que houver uma nova alteração, o job será disparado.
  • Você deve agora adicionar os seguintes passos ao job:
    • Construir a imagem Docker com docker build e docker tag.
    • Enviar a imagem para o Amazon ECR com docker push.
    • Atualizar o arquivo Dockerrun.aws.json com o nome da nova imagem.
    • Gerar o novo zip após a alteração no Dockerrun.aws.json.
    • Executar o comando terraform apply.
    • Atualizar o ambiente Elastic Beanstalk com aws elasticbeanstalk update-environment.
  • Salve e execute o job para testar se tudo está tudo ok.

Lembrando que aqui na plataforma nós temos uma formação sobre CI / CD e um curso sobre Jenkins (com Docker):

Se outra dúvida surgir, estamos disponíveis.

Abraços e bons estudos! :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.