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 (repositório CodeCommit), 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 repositório GitHub para a origem, um servidor de compilação Jenkins para compilar o projeto e um aplicativo CodeDeploy para implantar o código criado em um servidor de preparaçã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 repositório GitHub para o código-fonte, você deverá criar o repositório antes de adicioná-lo ao pipeline. Como parte da configuração, este tutorial orienta você a configurar o Jenkins em uma instância do EC2 para fins de demonstração.

Importante

Muitas das ações que você adiciona ao pipeline neste procedimento envolvemAWSRecursos que você precisa criar antes de criar o pipeline.AWSPara suas ações de origem devem sempre ser criados no mesmoAWSRegião em que você cria seu pipeline. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), o repositório CodeCommit também deverá estar na região Leste dos EUA (Ohio).

É possível adicionar ações entre regiões ao criar seu pipeline.AWSOs recursos para ações entre regiões devem estar no mesmoAWSRegião onde você planeja executar a ação. Para obter mais informações, consulte Adicionar uma ação entre regiões no CodePipeline.

Antes de iniciar este tutorial, você já deve ter concluído os pré-requisitos gerais em Conceitos básicos do CodePipeline.

Etapa 1: Concluir os pré-requisitos

Para integrar com Jenkins,AWS CodePipelineO exige a instalação do plug-in do CodePipeline para o Jenkins em todas as instâncias do Jenkins que você deseja usar com o CodePipeline. Você também deve configurar um usuário do IAM dedicado para usar as permissões entre o projeto Jenkins e o CodePipeline. A maneira mais fácil de integrar o Jenkins e o CodePipeline é instalar o Jenkins em uma instância do EC2 que use uma função de instância do IAM que você cria para a integração do Jenkins. Para a conexão dos links no pipeline das ações do Jenkins ocorrer com êxito, é necessário definir as configurações de proxy e firewall no servidor ou na instância do EC2 para permitir conexões de entrada na porta usada pelo projeto do Jenkins. Verifique se você configurou 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ê fixou Jenkins para usar somente conexões HTTPS, ou 80 e 8080 se você permite 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. Faça download do exemplo de código aberto do repositório GitHub seguindo as etapas em Copiar ou reproduzir a amostra em um repositório GitHub. Você precisará da amostra inteira no repositório GitHub, 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 do ambiente do sistema exigidas para que os comandos do Rake possam ser executados do terminal ou da linha de comando (por exemplo, em sistemas Windows, alterar a variável PATH para incluir o diretório em que o Rake está instalado).

Copiar ou reproduzir a amostra em um repositório GitHub

Como clonar a amostra e enviá-la para um repositório GitHub

  1. Faça o download do código de exemplo a partir do repositório GitHub ou clone os repositórios para o 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 mais informações, consulte a Documentação do GitHub.

Criar uma função do IAM para usar na integração do Jenkins

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

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

  2. No console do IAM, no painel de navegação, selecioneFunções doE, depois, escolhaCriar função.

  3. Em Select type of trusted entity (Selecionar o tipo de entidade confiável), selecione AWS service (serviço da AWS). Em Choose the service that will use this role (Escolha o serviço que usará essa função), escolha EC2. Em Select your use case (Selecione seu caso de uso), escolha EC2.

  4. Selecione Next (Próximo): Permissions NoAnexe políticas de permissões, selecione oAWSCodePipelineCustomActionAccesse, em seguida, escolhaPróximo: Tags. Selecione Next (Próximo): Análise.

  5. NoReview (Revisar), emNome da funçãoInsira o nome da função a ser criada especificamente para integração do Jenkins (por exemplo,JenkinsAccess) e, depois, escolhaCriar função.

Quando você cria a instância do EC2 na qual você instalará o Jenkins, emEtapa 3: Configurar os detalhes da instância, certifique-se de escolher a função de instância (por exemplo,JenkinsAccess).

Para obter mais informações sobre funções de instância e o Amazon EC2, consulteFunções do IAM para Amazon EC2,Usar funções do IAM para conceder permissões a aplicativos em execução nas instâncias do Amazon EC2, eCriar uma função para delegar permissões a umAWSServiço.

Instalar e configurar o Jenkins e o plug-in do CodePipeline para o Jenkins

Para instalar Jenkins e o Plug-in CodePipeline para Jenkins

  1. Crie uma instância do EC2 em que você instalará o Jenkins e, emEtapa 3: Configurar os detalhes da instância, selecione a função de instância que você criou (por exemplo,JenkinsAccess). Para obter mais informações sobre como criar instâncias do EC2, consulteExecutar uma instância do Amazon EC2noGuia do usuário do Amazon EC2.

    nota

    Se você já tem recursos Jenkins que deseja utilizar, você pode fazê-lo, mas você deve criar um usuário do IAM especial, aplicar oAWSCodePipelineCustomActionAccessPara esse usuário e depois configure e use as credenciais de acesso para esse usuário em seu recurso Jenkins. Se deseja utilizar a IU Jenkins para fornecer as credenciais, configure o Jenkins para permitir apenas HTTPS. Para obter mais informações, consulte Solucionando problemas de.

  2. Instale o 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 ao 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. SelecionePlugin CodePipeline para JenkinsNa lista e selecioneFaça download agora e instale 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 do Jenkins (por exemplo, MyDemoProject). Selecione Projeto estilo livre e depois OK.

    nota

    Verifique se o nome do projeto atende aos requisitos do CodePipeline. Para obter mais informações, consulte Cotas noAWSCodePipeline.

  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 instância do EC2 e configurou oAWS CLICom o perfil do usuário do IAM que você criou para a integração entre o CodePipeline e o Jenkins, deixe todos os outros campos em branco.

  11. SelecioneAdvanced (Avançado), e emFornecedorInsira um nome para o provedor da ação que será exibido no CodePipeline (por exemplo,MyJenkinsProviderName). Certifique-se de que esse nome seja exclusivo 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

    Este nome de ação deve atender aos requisitos de nomenclatura para ações no CodePipeline. Para obter mais informações, consulte Cotas noAWSCodePipeline.

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

    * * * * *

    Isso pesquisa CodePipeline a cada minuto.

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

    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. SelecioneAdicionar ação de pós-compilaçãoE, depois, escolhaAWSCodePipeline. 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 automática do CodePipeline

  1. Faça login noAWS Management Consolee abra o console do CodePipeline emhttp://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 emus-east-2, certifique-se de que 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 para o CodePipeline, consulteAWS CodePipelineEndpoints e cotas do.

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

  4. NoEtapa 1: Escolher configurações de pipeline, emPipeline name (Nome do pipeline)Insira o nome do pipeline.

  5. DentroFunção de serviço, escolhaNova função de serviçoPara permitir que o CodePipeline crie uma função de serviço no IAM.

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

  7. DentroEtapa 2: Adicionar estágio de origem, emProvedor de origem, escolhaGitHubE, depois, escolhaConnect ao GitHub. Isso abrirá uma nova janela do navegador que o conectará ao GitHub. Caso o login seja solicitado, forneça suas credenciais do GitHub.

    Importante

    Não forneça seuAWSNo site do GitHub.

    Depois de selecionar o GitHub, uma mensagem será exibida informando que o CodePipeline criará um webhook no GitHub para o seu pipeline.

    Depois de conectado ao GitHub, selecione o repositório e ramo onde você enviou a amostra que deseja usar para este tutorial (aws-codepipeline-jenkins-aws-codedeploy_linux.zip ou AWSCodePipeline-Jenkins-AWSCodeDeploy_Windows.zip) e depois selecionePróximo.

    nota

    No GitHub, há um limite para o número de tokens OAuth que você pode usar para um aplicativo, como CodePipeline. Se você exceder esse limite, tente novamente a conexão para permitir que o CodePipeline se reconecte reutilizando tokens existentes.

  8. DentroEtapa 3: Adicionar estágio de compilação, escolhaAdicionar Jenkins. DentroNome do provedorInsira o nome da ação que você forneceu no plug-in do CodePipeline para o Jenkins (por exemplo,MyJenkinsProviderName). Esse nome deve corresponder exatamente ao nome no plug-in do CodePipeline para o Jenkins. Em Server URL (URL do servidor), digite o URL da instância do EC2 onde Jenkins está instalado. Em Project name (Nome do projeto), insira o nome do projeto criado no Jenkins, como MyDemoProject e escolha Next (Próximo).

  9. DentroEtapa 4: Adicionar estágio de implantaçãoReutilize o aplicativo do CodeDeploy e o grupo de implantação que você criou noTutorial: Criar um pipeline simples (bucket do S3). DentroProvedor de implantação, escolhaCodeDeploy. 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 recursos CodeDeploy ou criar novos recursos, mas isso pode gerar custos adicionais.

  10. DentroEtapa 5: Review (Revisar)Revise as informações e escolhaCriar pipeline.

  11. O pipeline inicia automaticamente e executa a amostra através do pipeline. Você pode visualizar o andamento e mensagens de êxito e falha à medida que o pipeline cria a amostra Haml para HTML e implanta uma página da web para cada uma das instâncias do Amazon EC2 na implantação do 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 Item Name (Nome do item), insira um nome para o projeto Jenkins (por exemplo, MyTestProject). Selecione Projeto estilo livre e depois OK.

    nota

    Verifique se o nome do projeto atende aos requisitos do CodePipeline. Para obter mais informações, consulte Cotas noAWSCodePipeline.

  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 instância do EC2 e configurou oAWS CLICom o perfil do usuário do IAM que você criou para a integração entre o CodePipeline e o Jenkins, deixe todos os outros campos em branco.

    Importante

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

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

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

    nota

    Esse nome deve atender aos requisitos do CodePipeline para nomenclatura de ações. Para obter mais informações, consulte Cotas noAWSCodePipeline.

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

    * * * * *

    Isso pesquisa CodePipeline a cada minuto.

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

    TEST_IP_ADDRESS=192.168.0.4 rake test

    Se você estiver implantando em instâncias do Windows Server, selecioneComando Executar loteE insira o seguinte, onde o endereço IP é o endereço da instância do EC2 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. SelecioneAdicionar ação de pós-compilaçãoE, depois, escolhaAWSCodePipeline. 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 noAWS Management Consolee abra o console do CodePipeline emhttp://console.aws.amazon.com/codesuite/codepipeline/home.

  2. DentroName (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 Action name (Nome da ação), insira MyJenkinsTest-Action. Em Provedor do teste, selecione o nome do provedor que você especificou em Jenkins (por exemplo, MyJenkinsProviderName). Em Project name (Nome do projeto), insira o nome do projeto criado em Jenkins (por exemplo, MyTestProject). Em Input artifacts (Artefatos de entrada), escolha o artefato da compilação Jenkins cujo nome padrão é BuildArtifact e selecione Done (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 Referência da estrutura do pipeline do Code.

  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 no pipeline revisado na página de detalhes do pipeline, selecioneAlteração de liberaçã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 o CodePipeline, exclua o pipeline, o aplicativo CodeDeploy e as instâncias do Amazon EC2 associadas e, por último, o bucket do Amazon S3 usado para armazenar os artefatos. Caso não pretenda continuar usando os outros recursos, como o repositório GitHub, pode ser uma boa ideia apagá-los também.

Para limpar os recursos usados neste tutorial

  1. Abra uma sessão de terminal em sua máquina local Linux, macOS ou Unix ou um prompt de comando em sua máquina local do Windows e execute odelete-pipelinepara 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 recursos do CodeDeploy, siga as instruções emLiberar.

  3. Para limpar os recursos de sua instância, exclua a instância do EC2 onde 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 o CodePipeline novamente, exclua o bucket do Amazon S3 usado para armazenar artefatos para o 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ê deseja excluir o repositório GitHub, siga as instruções em Excluir um repositório no site GitHub.