Tutorial: Crie e envie uma imagem do Docker para o Amazon ECR com CodePipeline (tipo V2) - AWS CodePipeline

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tutorial: Crie e envie uma imagem do Docker para o Amazon ECR com CodePipeline (tipo V2)

Este tutorial ajuda você a criar uma ação de compilação CodePipeline que executa e envia sua imagem do Docker para o Amazon ECR após uma alteração no código-fonte. Este tutorial também mostra como adicionar uma ação de implantação do Amazon ECS que implanta a imagem enviada por push.

Importante

Como parte da criação de um pipeline no console, um bucket de artefatos S3 será usado CodePipeline por for artefacts. (Este bucket não é o mesmo utilizado para uma ação de origem do S3.) Se o bucket de artefatos do S3 estiver em uma conta diferente da conta do seu pipeline, certifique-se de que o bucket de artefatos do S3 Contas da AWS seja de propriedade de quem é seguro e confiável.

nota

Este tutorial é para a ação de ECRBuild AndPublish criação de um CodePipeline pipeline com um repositório de GitHub origem e uma ação padrão do Amazon ECS para implantação em um cluster do Amazon ECS. Para ver um tutorial que usa um pipeline com um repositório de imagens ECR como fonte para uma ação de implantação CodeDeploy azul/verde do Amazon ECS em, consulte. CodePipeline Tutorial: Criar um pipeline com a origem do Amazon ECR e a implantação do ECS para CodeDeploy

Importante

Essa ação usa CodeBuild computação CodePipeline gerenciada para executar comandos em um ambiente de compilação. A execução da ação Comandos incorrerá em cobranças separadas no AWS CodeBuild.

Pré-requisitos

Para você usar este tutorial para criar seu pipeline de CD, alguns recursos precisam estar em operação. Veja aqui estão os itens que você precisa para começar:

nota

Todos esses recursos devem ser criados na mesma AWS região.

  • Um repositório de controle de código-fonte (este tutorial usa GitHub) onde você adicionará o seguinte neste tutorial:

    • Na Etapa 1, você adicionará uma amostra do Dockerfile ao seu repositório de origem como artefato de entrada para a ECRBuild AndPublish ação de compilação em. CodePipeline

    • Na Etapa 2, você adicionará um arquivo imagedefinitions.json de amostra ao seu repositório de origem como requisito para a ação de implantação padrão do Amazon ECS em. CodePipeline

  • Um repositório de imagens do Amazon ECR que contém uma imagem compilada por você a partir do Dockerfile. Para obter mais informações, consulte Criação de um repositório e Envio de uma imagem por push no Guia do usuário do Amazon Elastic Container Registry.

  • Um cluster e um serviço do Amazon ECS criados na mesma região do repositório de imagens. Para obter mais informações, consulte Criação de um cluster e Criação de um serviço no Guia do desenvolvedor do Amazon Elastic Container Service.

Assim que você atender a esses pré-requisitos, poderá continuar com o tutorial e criar seu pipeline de CD.

Etapa 1: Adicionar um Dockerfile ao repositório de origem

Este tutorial usa a ECRBuild AndPublish ação para criar sua imagem do Docker e enviar a imagem para o Amazon ECR. A ação de computação gerenciada é CodePipeline usada CodeBuild para executar os comandos de login e envio de imagem do ECR. Você não precisa adicionar um buildspec.yml arquivo ao seu repositório de código-fonte para saber CodeBuild como fazer isso. Você só fornece o Dockerfile no repositório da mesma forma que faz para este exemplo.

Cole esse texto de amostra para criar o arquivo Dockerfile. Este Dockerfile de amostra é o mesmo da amostra usada nas instruções de imagem do ECR nos pré-requisitos.

FROM public.ecr.aws/amazonlinux/amazonlinux:latest # Install dependencies RUN yum update -y && \ yum install -y httpd # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \ echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh
Para adicionar um arquivo Dockerfile ao repositório de origem
  1. Abra um editor de texto e, em seguida, copie e cole o Dockerfile acima em um novo arquivo.

  2. Confirme e envie o arquivo Dockerfile para o repositório de origem.

    1. Adicione o arquivo.

      git add .
    2. Confirme a alteração.

      git commit -m "Adding Dockerfile."
    3. Envie a confirmação.

      git push

    Não se esqueça de colocar o arquivo no nível raiz do repositório.

    / Dockerfile

Etapa 2: Adicionar um arquivo imagedefinitions.json ao repositório de origem

Este tutorial usa a ação de implantação padrão do Amazon ECS CodePipeline para implantar seu contêiner em seu cluster do Amazon ECS. A ação de implantação padrão do Amazon ECS exige um arquivo imagedefinitions.json contendo o nome e o URI da imagem. Para obter mais informações sobre o arquivo imagedefinitions.json, consulte Arquivo imagedefinitions.json para ações de implantação padrão do Amazon ECS.

Cole esse texto de amostra para criar o arquivo imagedefinitions.json. Use o nome no Dockerfile, como hello-world, e use o URI do repositório do Amazon ECR onde a imagem está armazenada.

[ { "name": "hello-world", "imageUri": "ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/actions/image-repo" } ]
Para adicionar um arquivo imagedefinitions.json ao repositório de origem
  1. Abra um editor de texto e, em seguida, copie e cole o exemplo acima em um novo arquivo.

  2. Confirme e envie o arquivo imagedefinitions.json para o repositório de origem.

    1. Adicione o arquivo.

      git add .
    2. Confirme a alteração.

      git commit -m "Adding imagedefinitions.json."
    3. Envie a confirmação.

      git push

    Não se esqueça de colocar o arquivo no nível raiz do repositório.

    / imagedefinitions.json

Etapa 3: Criação do pipeline

Use o CodePipeline assistente para criar seus estágios de funil e conectar seu repositório de origem.

Para criar o pipeline
  1. Abra o CodePipeline console em https://console.aws.amazon.com/codepipeline/.

  2. Na página Welcome (Bem-vindo), Getting started (Conceitos básicos) ou Pipelines, selecione Create pipeline (Criar pipeline).

  3. Na página Etapa 1: Escolher opção de criação, em Opções de criação, selecione a opção Criar pipeline personalizado. Escolha Próximo.

  4. Em Etapa 2: Escolher as configurações do pipeline, em Nome do pipeline, insira MyPipeline.

  5. CodePipeline fornece tubulações do tipo V1 e V2, que diferem em características e preço. O tipo V2 é o único tipo que você pode escolher no console. Para ter mais informações, consulte Pipeline types. Para obter informações sobre preços de CodePipeline, consulte Preços.

  6. Em Função de serviço, escolha Nova função de serviço para permitir CodePipeline a criação de uma função de serviço no IAM.

  7. Deixe as configurações em Advanced settings (Configurações avançadas) como padrão e escolha Next (Próximo).

  8. Na página Etapa 3: Adicionar etapa de origem, adicione uma etapa de origem:

    1. Em Provedor de origem, escolha GitHub (via GitHub aplicativo).

    2. Em Conexão, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulteGitHub conexões.

    3. Em Repository name (Nome do repositório), selecione o nome do seu repositório do GitHub .

    4. Em Ramificação padrão, selecione a ramificação que você deseja especificar quando o pipeline é iniciado manualmente ou com um evento de origem que não seja uma tag do Git. Se a origem da alteração não for o gatilho ou se a execução de um pipeline tiver sido iniciada manualmente, a alteração usada será a confirmação HEAD da ramificação padrão.

    Escolha Próximo.

  9. Na página Etapa 4: Adicionar estágio de compilação, escolha Outros provedores de compilação ECRBuildAndPublish.

    Adicione uma ação de compilação do Amazon ECR ao pipeline.
    1. Para Nome do repositório do ECR, escolha o repositório de imagens.

    2. Escolha Próximo.

  10. Em Etapa 5: Adicionar etapa de teste, escolha Ignorar etapa de teste e aceite a mensagem de aviso escolhendo Ignorar novamente.

    Escolha Próximo.

  11. Na página Etapa 6: Adicionar etapa de implantação, escolha Ignorar etapa de implantação. Você adicionará a ação do ECS na etapa a seguir.

  12. Na página Etapa 7: Revisão, revise a configuração do pipeline e escolha Create pipeline para criar o pipeline.

  13. Edite o pipeline para adicionar a ação de implantação do Amazon ECS ao pipeline:

    1. No canto superior direito, escolha Edit (Editar).

    2. Na parte inferior do diagrama, escolha + Add stage (+ Adicionar estágio). Em Nome do estágio, insira um nome, como Deploy.

    3. Escolha + Add action group (Adicionar grupo de ação).

    4. Em Nome da ação, insira um nome.

    5. Em Provedor de ação, escolha Amazon ECR. Permita que Region (Região) seja definida para a região do pipeline.

    6. Em Artefatos de entrada, escolha o artefato do estágio de origem, como SourceArtifact.

    7. Em Nome do cluster, escolha o cluster do Amazon ECS no qual o serviço está em execução.

    8. Para Nome do serviço, escolha o serviço a ser atualizado.

    9. Escolha Salvar.

    10. No estágio que está editando, escolha Done (Concluído). No painel do AWS CodePipeline , escolha Save (Salvar) e selecione Save (Salvar) na mensagem de aviso.

    11. Para enviar suas alterações e iniciar uma compilação do pipeline, selecione Liberar alteração e, depois, Liberar.

  14. Depois que o pipeline for executado, exiba a estrutura e o status do pipeline.

    Um diagrama de console mostrando uma execução bem-sucedida do pipeline com a ação de implantação do Amazon ECS adicionada ao pipeline.
  15. Depois que o pipeline for executado com êxito, escolha Visualizar detalhes para exibir os logs na ação a fim de exibir a saída da ação da computação gerenciada.

    Exiba logs da ação de implantação do Amazon ECR no pipeline.
  16. Solucione o problema de qualquer falha. Por exemplo, a ação de implantação do ECS poderá falhar se o arquivo imagedefinitions.json não estiver no repositório de origem. Este é um exemplo da mensagem de erro exibida quando o arquivo imagedefinitions.json não é encontrado.

    Exiba logs da ação de implantação do Amazon ECR no pipeline.

Etapa 4: Testar o pipeline

Seu pipeline deve ter tudo para executar uma implantação AWS contínua end-to-end nativa. Agora, teste a funcionalidade enviando uma alteração de código ao repositório de origem.

Para testar o pipeline
  1. Faça uma alteração no código no repositório de origem configurado, confirme e envie a alteração.

  2. Abra o CodePipeline console em https://console.aws.amazon.com/codepipeline/.

  3. Escolha o pipeline na lista.

  4. Observe a evolução do pipeline pelos respectivos estágios. O pipeline deve ser concluído e a ação, enviar por push a imagem do Docker que foi criada a partir da alteração do código.