Tutorial: Criar um pipeline de quatro estágios - 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: Criar um pipeline de quatro estágios

Agora que você criou seu primeiro pipeline em Tutorial: Criar um pipeline simples (bucket do S3) ou Tutorial: criar um pipeline simples (CodeCommitrepositório), você pode começar a criar pipelines mais complexos. Este tutorial orientará você na criação de um pipeline de quatro estágios que usa um GitHub repositório para sua fonte, um servidor de compilação Jenkins para criar o projeto e um CodeDeploy aplicativo para implantar o código criado em um servidor de teste. O diagrama a seguir mostra o pipeline inicial de três estágios.

Um diagrama mostrando o estágio de origem com a ação de origem, um estágio de compilação com a ação do Jenkins e um estágio de implantação com a ação de implantação.

Após a criação do pipeline, você o editará para adicionar um estágio com uma ação de teste para testar o código, também usando Jenkins.

Antes de criar esse pipeline, você deve configurar os recursos necessários. Por exemplo, se você quiser usar um GitHub repositório para seu código-fonte, deverá criar o repositório antes de adicioná-lo a um pipeline. Como parte da configuração, este tutorial explica como configurar o Jenkins em uma EC2 instância para fins de demonstração.

Importante

Muitas das ações que você adiciona ao pipeline nesse procedimento envolvem AWS recursos que você precisa criar antes de criar o pipeline. AWS os recursos para suas ações de origem sempre devem ser criados na mesma AWS região em que você cria seu pipeline. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), seu CodeCommit repositório deverá estar na região Leste dos EUA (Ohio).

Você pode adicionar ações entre regiões ao criar seu pipeline. AWS os recursos para ações entre regiões devem estar na mesma AWS região em que você planeja executar a ação. Para obter mais informações, consulte Adicionar uma ação entre regiões em CodePipeline.

Importante

Como parte da criação de um pipeline, um bucket de artefatos S3 fornecido pelo cliente será usado CodePipeline por for artefacts. (Isso é diferente do bucket usado 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.

Antes de iniciar este tutorial, você já deve ter concluído os pré-requisitos gerais em Começando com CodePipeline.

Etapa 1: Concluir os pré-requisitos

Para se integrar com o Jenkins, é AWS CodePipeline necessário instalar o CodePipeline plug-in para Jenkins em qualquer instância do Jenkins com a qual você queira usar. CodePipeline Você também deve configurar um IAM usuário ou função dedicada para usar como permissões entre seu projeto Jenkins e. CodePipeline A maneira mais fácil de integrar o Jenkins CodePipeline é instalar o Jenkins em uma EC2 instância que usa uma função de instância criada IAM por você para a integração com o Jenkins. Para que os links no pipeline das ações do Jenkins se conectem com sucesso, você deve definir as configurações de proxy e firewall no servidor ou na EC2 instância para permitir conexões de entrada com a porta usada pelo seu projeto Jenkins. Certifique-se de ter configurado o Jenkins para autenticar usuários e aplicar o controle de acesso antes de permitir conexões nessas portas (por exemplo, 443 e 8443 se você protegeu o Jenkins para usar somente HTTPS conexões, ou 80 e 8080 se você permitir conexões). HTTP Para obter mais informações, consulte Como fixar Jenkins.

nota

Este tutorial usa uma amostra de código e configura as etapas de criação que convertem a amostra de Haml em. HTML Você pode baixar o código de amostra de código aberto do GitHub repositório seguindo as etapas em. Copiar ou clonar a amostra em um repositório GitHub Você precisará da amostra inteira em seu GitHub repositório, não apenas do arquivo.zip.

Este tutorial também pressupõe que:

  • Você está familiarizado com a instalação e administração do Jenkins e com a criação de projetos do Jenkins.

  • Você instalou o Rake e o gem de Haml para Ruby no mesmo computador ou instância que hospeda o projeto do Jenkins.

  • Você definiu as variáveis de ambiente do sistema necessárias para que os comandos do Rake possam ser executados a partir do terminal ou da linha de comando (por exemplo, em sistemas Windows, modificando a PATH variável para incluir o diretório em que você instalou o Rake).

Copiar ou clonar a amostra em um repositório GitHub

Para clonar a amostra e enviá-la para um repositório GitHub
  1. Baixe o código de amostra do GitHub repositório ou clone os repositórios em seu computador local. Há dois pacotes de amostra:

  2. No repositório, selecione Fork para clonar a amostra do repositório em um repositório na sua conta do Github. Para obter mais informações, consulte a GitHubdocumentação.

Crie uma IAM função para usar na integração com o Jenkins

Como prática recomendada, considere iniciar uma EC2 instância para hospedar seu servidor Jenkins e usar uma IAM função para conceder à instância as permissões necessárias para interagir com ela. CodePipeline

  1. Faça login no AWS Management Console e abra o IAM console em https://console.aws.amazon.com/iam/.

  2. No IAM console, no painel de navegação, escolha Funções e, em seguida, escolha Criar função.

  3. Em Select type of trusted entity (Selecionar o tipo de entidade confiável), escolha AWS service (Serviço da AWS). Em Escolha o serviço que usará essa função, escolha EC2. Em Selecione seu caso de uso, escolha EC2.

  4. Selecione Next: Permissions (Próximo: permissões). Na página Attach permissions policies (Anexar políticas de permissões), selecione a política gerenciada AWSCodePipelineCustomActionAccess e escolha Next: Tags (Próximo: tags). Selecione Next: Review (Próximo: revisar).

  5. Na página Revisar, em Nome da função, insira o nome da função a ser criada especificamente para a integração com o Jenkins (por exemplo, JenkinsAccess) e, em seguida, escolha Criar função.

Ao criar a EC2 instância em que você instalará o Jenkins, na Etapa 3: Configurar detalhes da instância, certifique-se de escolher a função da instância (por exemplo, JenkinsAccess).

Para obter mais informações sobre funções de instância e AmazonEC2, consulte IAMFunções para a Amazon EC2, Uso de IAM funções para conceder permissões a aplicativos executados em EC2 instâncias da Amazon e Criação de uma função para delegar permissões a uma AWS service (Serviço da AWS).

Instale e configure o Jenkins e o CodePipeline plug-in para Jenkins

Para instalar o Jenkins e o CodePipeline plug-in para Jenkins
  1. Crie uma EC2 instância na qual você instalará o Jenkins e, na Etapa 3: Configurar detalhes da instância, certifique-se de escolher a função de instância que você criou (por exemplo, JenkinsAccess). Para obter mais informações sobre a criação de EC2 instâncias, consulte Iniciar uma EC2 instância da Amazon no Guia EC2 do usuário da Amazon.

    nota

    Se você já tem recursos do Jenkins que deseja usar, pode fazer isso, mas deve criar um IAM usuário especial, aplicar a política AWSCodePipelineCustomActionAccess gerenciada a esse usuário e, em seguida, configurar e usar as credenciais de acesso desse usuário no seu recurso do Jenkins. Se você quiser usar a interface do usuário do Jenkins para fornecer as credenciais, configure o Jenkins para permitir somente. HTTPS Para obter mais informações, consulte Solução de problemas CodePipeline.

  2. Instalar Jenkins na instância do EC2. Para obter mais informações, consulte a documentação do Jenkins para instalar o Jenkins e iniciar e acessar o Jenkins, assim como details of integration with Jenkins em Integrações de produtos e serviços com CodePipeline.

  3. Inicie o Jenkins e, na página inicial, selecione Gerenciar Jenkins.

  4. Na página Gerenciar Jenkins, selecione Gerenciar plug-ins.

  5. Selecione a guia Available (Disponível) e, na caixa de pesquisa Filter (Filtro), insira AWS CodePipeline. Escolha CodePipeline Plugin para Jenkins na lista e escolha Baixar agora e instalar após reiniciar.

  6. Na página Instalar plug-ins/atualizações, selecione Reiniciar Jenkins quando a instalação estiver concluída e nenhum trabalho estiver em execução.

  7. Selecione Voltar para o painel.

  8. Na página principal, selecione Novo item.

  9. Em Nome do item, insira um nome para o projeto Jenkins (por exemplo, MyDemoProject). Escolha Projeto Freestyle e, em seguida, escolha OK.

    nota

    Certifique-se de que o nome do seu projeto atenda aos requisitos do CodePipeline. Para obter mais informações, consulte Cotas em AWS CodePipeline.

  10. Na página de configuração do projeto, selecione a caixa de seleção Executar construções simultâneas se necessário. Em Source Code Management (Gerenciamento de código-fonte), selecione AWS CodePipeline. Se você instalou o Jenkins em uma EC2 instância e configurou o AWS CLI com o perfil do IAM usuário que você criou para integração entre CodePipeline e o Jenkins, deixe todos os outros campos vazios.

  11. Escolha Avançado e, em Provedor, insira um nome para o provedor da ação conforme ele aparecerá em CodePipeline (por exemplo, MyJenkinsProviderName). Certifique-se de que esse nome seja único e fácil de lembrar. Você o utilizará quando adicionar uma ação de construção para o pipeline mais adiante neste tutorial e novamente quando adicionar uma ação de teste.

    nota

    Esse nome de ação deve atender aos requisitos de nomenclatura para ações em CodePipeline. Para obter mais informações, consulte Cotas em AWS CodePipeline.

  12. Em Criar acionadores, desmarque todas as caixas de seleção e selecione Enquete. SCM Em Schedule (Programação), insira cinco asteriscos separados por espaços, conforme a seguir:

    * * * * *

    Isso faz pesquisas a CodePipeline cada minuto.

  13. Em Construir, selecione Adicionar etapa da construção. Escolha Executar shell (Amazon Linux ou Ubuntu Server) Executar comando em lote (Windows Server) e, em seguida, digite o seguinte: RHEL

    rake
    nota

    Verifique se o ambiente está configurado com as variáveis e as configurações necessárias para executar rake; caso contrário, a construção falhará.

  14. Escolha Adicionar ação pós-compilação e, em seguida, escolha AWS CodePipeline Publisher. Selecione Adicionar, e em Criar pontos de saída, deixe o local em branco. Esta configuração é o padrão. Ela criará um arquivo compactado no final do processo de construção.

  15. Selecione Salvar para salvar seu projeto Jenkins.

Etapa 2: criar um pipeline no CodePipeline

Nesta parte do tutorial, você criará o pipeline usando o assistente Create Pipeline (Criar pipeline).

Para criar um processo de liberação CodePipeline automatizado
  1. Faça login no AWS Management Console e abra o CodePipeline console em http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Se necessário, use o seletor de região para alterar a região para aquela em que os recursos do pipeline estão localizados. Por exemplo, se você criou recursos para o tutorial anterior em us-east-2, verifique se o seletor de região está definido como Leste dos EUA (Ohio).

    Para obter mais informações sobre as regiões e os endpoints disponíveis CodePipeline, consulte AWS CodePipeline endpoints e cotas.

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

  4. Na página Step 1: Choose pipeline settings (Etapa 1: selecionar configurações do pipeline), em Pipeline name (Nome do pipeline), insira o nome do seu pipeline.

  5. Em Tipo de pipeline, selecione V1 para os fins deste tutorial. Também é possível selecionar V2; no entanto, observe que os tipos de pipeline diferem em características e preços. Para obter mais informações, consulte Tipos de pipeline.

  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 emIAM.

  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 2: Adicionar estágio de origem, em Provedor de origem, escolha GitHub.

  9. 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.

  10. Em Step 3: Add build stage (Etapa 3: adicionar estágio de compilação), escolha Add Jenkins (Adicionar Jenkins). Em Nome do provedor, insira o nome da ação que você forneceu no CodePipeline Plugin para Jenkins (por exemplo MyJenkinsProviderName). Esse nome deve corresponder exatamente ao nome no CodePipeline Plugin para Jenkins. Em Servidor URL, insira URL a EC2 instância em que o Jenkins está instalado. Em Nome do projeto, insira o nome do projeto que você criou no Jenkins, como MyDemoProjecte, em seguida, escolha Avançar.

  11. Na Etapa 4: Adicionar estágio de implantação, reutilize o CodeDeploy aplicativo e o grupo de implantação que você criou. Tutorial: Criar um pipeline simples (bucket do S3) Em Deploy provider (Fornecedor de implantação), escolha CodeDeploy. Em Application name (Nome do aplicativo), insira CodePipelineDemoApplication ou selecione o botão de atualização e selecione o nome do aplicativo na lista. Em Deployment group (Grupo de implantação), insira CodePipelineDemoFleet ou selecione-o na lista e selecione Next (Próximo).

    nota

    Você pode usar seus próprios CodeDeploy recursos ou criar novos, mas poderá incorrer em custos adicionais.

  12. Em Etapa 5: Revisar, revise as informações e, então selecione Criar pipeline.

  13. O pipeline inicia automaticamente e executa a amostra através do pipeline. Você pode visualizar as mensagens de progresso, sucesso e falha à medida que o pipeline cria a amostra do Haml HTML e a implanta em uma página da Web em cada uma das EC2 instâncias da Amazon na implantação. CodeDeploy

Etapa 3: Adicionar outro estágio ao pipeline

Agora, você adicionará um estágio de teste e uma ação de teste a esse estágio que use o teste do Jenkins incluído na amostra para determinar se a página da web tem algum conteúdo. Esse teste é apenas para fins de demonstração.

nota

Se não quiser adicionar outro estágio ao pipeline, você poderá adicionar uma ação de teste ao estágio Preparação do pipeline, antes ou depois da ação de implantação.

Adicionar um estágio de teste ao pipeline

Procurar o endereço IP de uma instância

Para verificar o endereço IP de uma instância onde você implantou seu código
  1. Após a exibição do status Bem-sucedido para o pipeline, na área do status para o estágio Staging, selecione Detalhes.

  2. Na seção Detalhes da implantação, em ID da instância, selecione a ID da instância de uma das instâncias implantadas com êxito.

  3. Copie o endereço IP da instância (por exemplo, 192.168.0.4). Você usará esse endereço IP em seu teste Jenkins.

Criar um projeto do Jenkins para testar a implantação

Para criar o projeto Jenkins
  1. Na instância onde você instalou o Jenkins, abra Jenkins e, na página principal, selecione Novo item.

  2. Em Nome do item, insira um nome para o projeto Jenkins (por exemplo, MyTestProject). Escolha Projeto Freestyle e, em seguida, escolha OK.

    nota

    Certifique-se de que o nome do seu projeto atenda aos CodePipeline requisitos. Para obter mais informações, consulte Cotas em AWS CodePipeline.

  3. Na página de configuração do projeto, selecione a caixa de seleção Executar construções simultâneas se necessário. Em Source Code Management (Gerenciamento de código-fonte), selecione AWS CodePipeline. Se você instalou o Jenkins em uma EC2 instância e configurou o AWS CLI com o perfil do IAM usuário que você criou para integração entre CodePipeline e o Jenkins, deixe todos os outros campos vazios.

    Importante

    Se você estiver configurando um projeto Jenkins e ele não estiver instalado em uma EC2 instância da Amazon ou estiver instalado em uma EC2 instância que esteja executando um sistema operacional Windows, preencha os campos conforme exigido pelas configurações de porta e host proxy e forneça as credenciais do IAM usuário ou função que você configurou para integração entre Jenkins e. CodePipeline

  4. Selecione Avançado e, em Categoria, selecione Testar.

  5. Em Provedor, insira o mesmo nome que você usou para o projeto de construção (por exemplo, MyJenkinsProviderName). Você usará esse nome ao adicionar a ação de teste ao seu pipeline posteriormente neste tutorial.

    nota

    Esse nome deve atender aos requisitos de CodePipeline nomenclatura das ações. Para obter mais informações, consulte Cotas em AWS CodePipeline.

  6. Em Criar acionadores, desmarque todas as caixas de seleção e selecione Enquete. SCM Em Schedule (Programação), insira cinco asteriscos separados por espaços, conforme a seguir:

    * * * * *

    Isso faz pesquisas a CodePipeline cada minuto.

  7. Em Construir, selecione Adicionar etapa da construção. Se você estiver implantando em instâncias do Amazon Linux ou Ubuntu Server, escolha Execute shell. RHEL Em seguida, insira o seguinte, em que o endereço IP é o endereço da EC2 instância que você copiou anteriormente:

    TEST_IP_ADDRESS=192.168.0.4 rake test

    Se você estiver implantando em instâncias do Windows Server, escolha Executar comando em lote e digite o seguinte, em que o endereço IP é o endereço da EC2 instância que você copiou anteriormente:

    set TEST_IP_ADDRESS=192.168.0.4 rake test
    nota

    O teste assume uma porta padrão de 80. Se você deseja especificar uma porta diferente, adicione uma instrução de porta de teste, conforme a seguir:

    TEST_IP_ADDRESS=192.168.0.4 TEST_PORT=8000 rake test
  8. Escolha Adicionar ação pós-compilação e, em seguida, escolha AWS CodePipeline Publisher. Não selecione Adicionar.

  9. Selecione Salvar para salvar seu projeto Jenkins.

Criar um quarto estágio

Para adicionar um estágio ao seu pipeline que inclui a ação de teste Jenkins
  1. Faça login no AWS Management Console e abra o CodePipeline console em http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Em Nome, escolha o nome do pipeline que você criou MySecondPipeline.

  3. Na página de detalhes do pipeline, selecione Editar.

  4. Na página Edit (Editar), selecione + Stage (Estágio) para adicionar um estágio imediatamente após o estágio de compilação.

  5. No campo de nome para o novo estágio, insira um nome (por exemplo, Testing) e escolha + Add action group (+ Adicionar grupo de ações).

  6. Em Nome da ação, insira MyJenkinsTest-Action. Em Provedor de teste, escolha o nome do provedor que você especificou no Jenkins (por exemplo, MyJenkinsProviderName). Em Nome do projeto, insira o nome do projeto que você criou no Jenkins (por exemplo, MyTestProject). Em Artefatos de entrada, escolha o artefato da compilação do Jenkins cujo nome padrão é BuildArtifacte, em seguida, escolha Concluído.

    nota

    Como a ação de teste do Jenkins é executada no aplicativo criado na etapa de compilação do Jenkins, use o artefato de compilação para o artefato de entrada na ação de teste.

    Para obter mais informações sobre artefatos de entrada e saída e a estrutura de pipelines, consulte CodePipeline referência de estrutura de tubulação.

  7. Na página Editar, selecione Salvar alterações do pipeline. Na caixa de diálogo da opção Salvar alterações do pipeline, selecione Salvar e continuar.

  8. Embora o novo estágio tenha sido adicionado ao seu pipeline, um status de Ainda não executado é exibido para o estágio, pois nenhuma alteração acionou outra execução do pipeline. Para executar a amostra por meio do pipeline revisado, na página de detalhes do pipeline, selecione Lançar alteração.

    A visualização do pipeline exibe os estágios e ações em seu pipeline e o estado da revisão em execução através desses quatro estágios. O tempo necessário para que o pipeline seja executado por todos os estágios dependerá do tamanho dos artefatos, da complexidade de sua construção ações de teste, além de outros fatores.

Etapa 4: Limpar os recursos

Após concluir este tutorial, você deverá excluir o pipeline e os recursos usados para não ser cobrado pelo uso contínuo desses recursos. Se você não pretende continuar usando CodePipeline, exclua o pipeline, depois o CodeDeploy aplicativo e suas EC2 instâncias Amazon associadas e, finalmente, o bucket do Amazon S3 usado para armazenar artefatos. Você também deve considerar a possibilidade de excluir outros recursos, como o GitHub repositório, caso não pretenda continuar usando-os.

Para limpar os recursos usados neste tutorial
  1. Abra uma sessão de terminal em sua máquina Linux, macOS ou Unix local ou um prompt de comando em sua máquina Windows local e execute o comando delete-pipeline para excluir o pipeline que você criou. Em MySecondPipeline, insira o seguinte comando:

    aws codepipeline delete-pipeline --name "MySecondPipeline"

    Esse comando não retorna nada.

  2. Para limpar seus CodeDeploy recursos, siga as instruções em Limpeza.

  3. Para limpar os recursos da sua instância, exclua a EC2 instância em que você instalou o Jenkins. Para obter mais informações, consulte Limpeza da sua instância.

  4. Se você não pretende criar mais pipelines ou usar CodePipeline novamente, exclua o bucket do Amazon S3 usado para armazenar artefatos para seu pipeline. Para excluir o bucket, siga as instruções em Excluir um bucket.

  5. Se você não pretende usar a outros recursos para esse pipeline novamente, considere excluí-los, seguindo as orientações para esse recurso específico. Por exemplo, se você quiser excluir o GitHub repositório, siga as instruções em Excluindo um repositório no site. GitHub