Tutorial: Criar um pipeline simples (bucket do S3) - 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 simples (bucket do S3)

A maneira mais fácil de criar um pipeline é usar o assistente de criação de pipeline no AWS CodePipeline console.

Neste tutorial, você cria um pipeline de dois estágios que usa um bucket S3 versionado e lança um aplicativo de CodeDeploy amostra.

nota

Quando o Amazon S3 é o provedor de origem do pipeline, é possível compactar o(s) arquivo(s) de origem em um único .zip e fazer upload do .zip para o bucket de origem. Também é possível fazer upload de um único arquivo descompactado; no entanto, ocorrerão falha nas ações downstream que aguardam um arquivo .zip.

Após criar esse pipeline simples, adicione outro estágio e, em seguida, desabilite e habilite a transição entre os estágios.

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 ter mais informações, consulte Adicionar uma ação entre regiões em CodePipeline.

Antes de começar, você deve cumprir os pré-requisitos em Começando com CodePipeline.

Etapa 1: Criar um bucket do S3 para o aplicativo

É possível armazenar os aplicativos ou arquivos de origem em qualquer local versionado. Neste tutorial, você criará um bucket do S3 para os exemplos de arquivo de aplicação e habilitar o versionamento nesse bucket. Após habilitar o versionamento, copie os aplicativos de exemplo para esse bucket.

Para criar um bucket do S3
  1. Faça login no console em AWS Management Console. Abra o console do S3.

  2. Escolha Create bucket (Criar bucket).

  3. No Bucket name (Nome do bucket), insira um nome para o seu bucket (por exemplo, awscodepipeline-demobucket-example-date).

    nota

    Como todos os nomes de bucket no Amazon S3 devem ser exclusivos, use um dos próprios nomes e não o nome exibido no exemplo. Você pode alterar o nome de exemplo simplesmente adicionando uma data. Anote esse nome, pois você precisará usá-lo mais adiante neste tutorial.

    Em Região, selecione a região onde você pretende criar o pipeline, como Oeste dos EUA (Oregon) e, depois, selecione Criar bucket.

  4. Depois que o bucket é criado, um banner de sucesso é exibido. Escolha Go to bucket details (Ir para detalhes do bucket).

  5. Na guia Properties (Propriedades) escolha Versioning (Versionamento). Escolha Enable versioning (Ativar versionamento) e escolha Save (Salvar).

    Quando o versionamento é habilitado, o Amazon S3 salva todas as versões de cada objeto no bucket.

  6. Na guia Permissions (Permissões) deixe os valores padrão. Para obter mais informações sobre permissões de bucket e objeto do S3, consulte Especificar permissões em uma política.

  7. Depois, faça download de um exemplo e salve-o em uma pasta ou um diretório no computador local.

    1. Escolha uma das seguintes opções. Escolha SampleApp_Windows.zip se deseja seguir as etapas deste tutorial para instâncias do Windows Server.

      • Se você quiser implantar em instâncias Amazon Linux usando CodeDeploy, baixe o aplicativo de amostra aqui: SampleApp_Linux.zip.

      • Se você quiser implantar em instâncias do Windows Server usando CodeDeploy, baixe o aplicativo de amostra aqui: SampleApp_Windows.zip.

      O aplicativo de amostra contém os seguintes arquivos para implantação com CodeDeploy:

      • appspec.yml— O arquivo de especificação do aplicativo (AppSpecarquivo) é um arquivo formatado em YAML usado por CodeDeploy para gerenciar uma implantação. Para obter mais informações sobre o AppSpec arquivo, consulte Referência CodeDeploy AppSpec do arquivo no Guia AWS CodeDeploy do usuário.

      • index.html: o arquivo de índice contém a página inicial da aplicação de exemplo implantada.

      • LICENSE.txt: o arquivo de licença contém informações de licença da aplicação de exemplo.

      • Arquivos para scripts: a aplicação de exemplo usa scripts para gravar arquivos de texto em um local na instância. Um arquivo é gravado para cada um dos vários eventos do ciclo de vida da CodeDeploy implantação da seguinte forma:

        • Pasta scripts (somente exemplo do Linux): a pasta contém os seguintes scripts de shell para instalar dependências e iniciar e interromper a aplicação de exemplo para a implantação automatizada: install_dependencies, start_server e stop_server.

        • (Somente exemplo do Windows) before-install.bat: um script em lote para o evento de ciclo de vida de implantação BeforeInstall, que será executado para remover os arquivos antigos gravados durante implantações anteriores deste exemplo e criar um local na instância onde os novos arquivos serão gravados.

    2. Faça download do arquivo compactado. Não descompacte o arquivo.

  8. No console do Amazon S3, para o bucket, faça upload do arquivo:

    1. Escolha Carregar.

    2. Arraste e solte o arquivo ou escolha Add files (Adicionar arquivos) e navegue até o arquivo.

    3. Escolha Carregar.

Etapa 2: Crie instâncias Windows do Amazon EC2 e instale o agente CodeDeploy

nota

Este tutorial fornece etapas de exemplo para criar instâncias do Windows do Amazon EC2. Para obter etapas de exemplo para criar instâncias do Linux do Amazon EC2, consulte Etapa 3: Crie uma instância Linux do Amazon EC2 e instale o agente CodeDeploy . Quando solicitado o número de instâncias a serem criadas, especifique 2 instâncias.

Nesta etapa, você vai criar as instâncias do Amazon EC2 do Windows Server nas quais implantará uma aplicação de exemplo. Como parte desse processo, você cria uma função de instância com políticas que permitem a instalação e o gerenciamento do CodeDeploy agente nas instâncias. O CodeDeploy agente é um pacote de software que permite que uma instância seja usada em CodeDeploy implantações. Você também anexa políticas que permitem que a instância busque arquivos que o CodeDeploy agente usa para implantar seu aplicativo e permitir que a instância seja gerenciada pelo SSM.

Como criar uma função de instância
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel do console, escolha Roles (Funções).

  3. Selecione Criar função.

  4. Em Selecionar tipo de entidade confiável, selecione AWS service (Serviço da AWS). Em Choose a use case (Escolher um caso de uso), selecione EC2 e escolha Next: Permissions (Próximo: permissões).

  5. Procure e selecione a política chamada AmazonEC2RoleforAWSCodeDeploy.

  6. Procure e selecione a política chamada AmazonSSMManagedInstanceCore. Escolha Próximo: etiquetas.

  7. Selecione Next: Review (Próximo: revisar). Forneça um nome para a função (por exemplo, EC2InstanceRole).

    nota

    Anote o nome da função para a próxima etapa. Escolha essa função ao criar a instância.

    Selecione Criar função.

Para executar instâncias
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. Na navegação lateral, escolha Instâncias e selecione Executar instâncias na parte superior da página.

  3. Em Nome e tags, em Nome, insira MyCodePipelineDemo. Isso atribui à instância uma tag Chave de Name e uma tag Valor de MyCodePipelineDemo. Posteriormente, você cria um CodeDeploy aplicativo que implanta o aplicativo de amostra nas instâncias. CodeDeployseleciona instâncias a serem implantadas com base nas tags.

  4. Em Imagens de aplicações e sistemas operacionais (imagem de máquina da Amazon), selecione a opção Windows. (Essa AMI é descrita como Microsoft Windows Server 2019 Base, é identificada como “Elegível para o nível gratuito” e pode ser encontrada em Início rápido.)

  5. Em Tipo de instância, selecione o tipo t2.micro elegível para o nível gratuito como configuração de hardware para a instância.

  6. Na seção Par de chaves (login), selecione um par de chaves ou crie um.

    Também é possível selecionar Prosseguir sem um par de chaves.

    nota

    Para os fins deste tutorial, é possível prosseguir sem um par de chaves. Para usar o SSH para se conectar às instâncias, crie ou use um par de chaves.

  7. Em Configurações de rede, faça o seguinte:

    Em Atribuir IP público automaticamente, verifique se o status é Habilitado.

    • Ao lado de Assign a security group (Atribuir um grupo de segurança), selecione Create a new security group (Criar novo grupo de segurança).

    • Na linha para SSH, em Tipo de origem, selecione Meu IP.

    • Selecione Adicionar grupo de segurança, selecione HTTP e, depois, em Tipo de origem, selecione Meu IP.

  8. Expanda Advanced details (Detalhes avançados). Em Perfil de instância do IAM, selecione o perfil do IAM criado no procedimento anterior (por exemplo, EC2InstanceRole).

  9. Em Resumo, em Número de instâncias, insira 2.

  10. Escolha Iniciar instância.

  11. Escolha View all instances (Visualizar todas as instâncias) para fechar a página de confirmação e voltar ao console.

  12. É possível visualizar o status da ativação na página Instâncias. Ao executar uma instância, seu estado inicial é pending. Após o início da instância, seu estado muda para running e ela recebe um nome DNS público. (Se a coluna do Public DNS (DNS público) não for exibida, selecione o ícone Show/Hide (Exibir/Ocultar) e Public DNS (DNS público).)

  13. Pode levar alguns minutos até que a instância esteja pronta para sua conexão. Verifique se a instância passou nas verificações de status. Você pode visualizar essas informações na coluna Status Checks (Verificações de status).

Etapa 3: criar um aplicativo no CodeDeploy

Em CodeDeploy, um aplicativo é um identificador, na forma de um nome, do código que você deseja implantar. CodeDeploy usa esse nome para garantir que a combinação correta de revisão, configuração de implantação e grupo de implantação seja referenciada durante uma implantação. Você seleciona o nome do CodeDeploy aplicativo criado nesta etapa ao criar seu pipeline posteriormente neste tutorial.

Primeiro, você cria uma função de serviço CodeDeploy para usar. Se você já criou um perfil de serviço, não precisará criar outro.

Para criar uma função CodeDeploy de serviço
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel do console, escolha Roles (Funções).

  3. Selecione Criar função.

  4. Em Selecionar entidade confiável, escolha AWS service (Serviço da AWS). Em Use case (Caso de uso), escolha CodeDeploy. CodeDeployEscolha entre as opções listadas. Escolha Próximo. A política gerenciada AWSCodeDeployRole já está anexada à função.

  5. Escolha Próximo.

  6. Insira um nome para a função (por exemplo, CodeDeployRole) e escolha Create role (Criar função).

Para criar um aplicativo no CodeDeploy
  1. Abra o CodeDeploy console em https://console.aws.amazon.com/codedeploy.

  2. Se a página Aplicativos não aparecer, no AWS CodeDeploy menu, escolha Aplicativos.

  3. Escolha Criar aplicativo.

  4. Em Nome do aplicativo, insira MyDemoApplication.

  5. Em Plataforma de computação, selecione EC2/On-Premises.

  6. Escolha Criar aplicativo.

Para criar um grupo de implantação no CodeDeploy
  1. Na página que mostra o aplicativo, selecione Create deployment group (Criar grupo de implantação).

  2. Em Nome do grupo de implantação, insira MyDemoDeploymentGroup.

  3. Em Perfil de serviço, selecione o perfil de serviço criado anteriormente. Você deve usar uma função de serviço que AWS CodeDeploy confie, no mínimo, na confiança e nas permissões descritas em Criar uma função de serviço para CodeDeploy. Para obter o ARN da função de serviço, consulte Obter ARN da função de serviço (console).

  4. Em Deployment type (Tipo de implantação), selecione In-place (No local).

  5. Em Environment configuration (Configuração do ambiente), selecione Amazon EC2 Instances (Instâncias do Amazon EC2). Escolha Name (Nome) no campo Key (Chave) e, no campo Value (Valor) informe MyCodePipelineDemo.

    Importante

    É necessário selecionar o mesmo valor para a chave Nome atribuída à instância do EC2 quando criada. Se você marcou instâncias com algo diferente de MyCodePipelineDemo, certifique-se de usar a tag aqui.

  6. Em Configuração do agente com AWS Systems Manager, escolha Agora e agende atualizações. Isso vai instalar o agente na instância. A instância do Windows já está configurada com o agente SSM e agora será atualizada com o CodeDeploy agente.

  7. Em Configurações da implantação, selecione CodeDeployDefault.OneAtaTime.

  8. Em Balanceador de carga, verifique se a caixa Habilitar balanceamento de carga não está selecionada. Você não precisa configurar um load balancer ou escolher um grupo de destino para este exemplo. Depois de desmarcar a caixa de seleção, as opções do balanceador de carga não são exibidas.

  9. Na seção Avançado deixe os padrões.

  10. Selecione Criar grupo de implantação.

Etapa 4: Crie seu primeiro funil em CodePipeline

Nesta parte do tutorial, você vai criar o pipeline. O exemplo executa automaticamente no 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. Na página Welcome (Bem-vindo), Getting started (Conceitos básicos) ou Pipelines, selecione Create pipeline (Criar pipeline).

  3. Em Step 1: Choose pipeline settings (Etapa 1: selecionar as configurações do pipeline), em Pipeline name (Nome do pipeline), insira MyFirstPipeline.

    nota

    Se você escolher outro nome para o pipeline, certifique-se de usar esse nome em vez de MyFirstPipeline no restante deste tutorial. Depois de criar um pipeline, não é possível alterar o nome dele. Os nomes de pipelines estão sujeitos à algumas limitações. Para ter mais informações, consulte Cotas em AWS CodePipeline.

  4. 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 ter mais informações, consulte Tipos de pipeline.

  5. Em Service role (Função de serviço), faça um dos seguintes procedimentos:

    • Escolha Nova função de serviço para permitir CodePipeline a criação de uma nova função de serviço no IAM.

    • Escolha Existing service role (Função de serviço existente) para usar uma função de serviço já criada no IAM. Em Role name (Nome da função), selecione a função de serviço na lista.

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

  7. Em Step 2: Add source stage (Etapa 2: adicionar estágio de origem), em Source provider (Provedor de origem), escolha Amazon S3. Em Bucket, insira o nome do bucket do S3 que você criou em Etapa 1: Criar um bucket do S3 para o aplicativo. Em S3 object key (Chave do objeto do S3), insira a chave do objeto com ou sem um caminho de arquivo, e lembre-se de incluir a extensão do arquivo. Por exemplo, para SampleApp_Windows.zip, insira o nome do arquivo de exemplo como mostrado neste exemplo:

    SampleApp_Windows.zip

    Escolha Próxima etapa.

    Em Change detection options (Alterar opções de detecção), deixe os valores padrão. Isso permite CodePipeline usar o Amazon CloudWatch Events para detectar alterações em seu bucket de origem.

    Escolha Próximo.

  8. Em Step 3: Add build stage (Etapa 3: Adicionar estágio de construção), selecione Skip build stage (Pular estágio de compilação) e aceite a mensagem de aviso ao clicar novamente em Skip (Pular). Escolha Próximo.

  9. Na Etapa 4: Adicionar estágio de implantação, em Provedor de implantação, escolha CodeDeploy . O campo Região é padronizado para o mesmo do seu Região da AWS funil. Em Application name (Nome do aplicativo), insira MyDemoApplication ou selecione o botão Refresh (Atualizar) e selecione o nome do aplicativo na lista. Em Deployment group (Grupo de implantação), insira MyDemoDeploymentGroup ou selecione-o na lista e selecione Next (Próximo).

    nota

    O nome Implantação é o nome padrão dado ao estágio criado em Step 4: Add deploy stage (Etapa 4: adicionar estágio de implantação), assim como Origem é o nome dado ao primeiro estágio do pipeline.

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

  11. O pipeline começa a ser executado. Você pode visualizar o progresso e as mensagens de sucesso e falha à medida que a CodePipeline amostra implanta uma página da web em cada uma das instâncias do Amazon EC2 na implantação. CodeDeploy

Parabéns! Você acabou de criar um pipeline simples em CodePipeline. O pipeline tem dois estágios:

  • Um estágio de origem chamado Source (Origem), que detecta as alterações no aplicativo de exemplo com versionamento armazenado no bucket do S3 e obtém essas alterações para o pipeline.

  • Um estágio de implantação que implanta essas alterações nas instâncias do EC2 com. CodeDeploy

Agora, verifique os resultados.

Como verificar se seu pipeline foi executado com êxito
  1. Visualize o progresso inicial do pipeline. O status de cada estágio muda de No executions yet (Ainda não executado) para In Progress (Em andamento) e, então, para Succeeded (Bem-sucedido) ou Failed (Falhou). O pipeline deve concluir a primeira execução dentro de alguns minutos.

  2. Após a exibição do status Com êxito para o status da ação, na área do status da etapa Implantar, selecione Detalhes. Isso abre o CodeDeploy console.

  3. Na guia Grupo de implantação, em Eventos de ciclo de vida da implantação, selecione o ID. Isso abre o console do EC2.

  4. Na guia Description (Descrição), em Public DNS (DNS público), copie o endereço e cole-o na barra de endereços de seu navegador da Web. Visualize a página de índice para o aplicativo de exemplo que você carregou para o bucket do S3.

    A página da web exibe a aplicação de exemplo que você baixou para o bucket do S3.

Para obter mais informações sobre os estágios, as ações e o funcionamento dos pipelines, consulte CodePipeline conceitos .

(Opcional) Etapa 5: Adicionar outra etapa ao pipeline

Agora, adicione outro estágio no pipeline para implantar, desde servidores de teste até servidores de produção usando CodeDeploy. Primeiro, você cria outro grupo de implantação no CodePipelineDemoApplication in CodeDeploy. Em seguida, adicione um estágio que inclui uma ação que usa esse grupo de implantação. Para adicionar outro estágio, você usa o CodePipeline console ou o AWS CLI para recuperar e editar manualmente a estrutura do pipeline em um arquivo JSON e, em seguida, executa o update-pipeline comando para atualizar o pipeline com suas alterações.

Crie um segundo grupo de implantação no CodeDeploy

nota

Nesta parte do tutorial, você vai criar um segundo grupo de implantação, mas o implantará nas mesmas instâncias do Amazon EC2 usadas anteriormente. Isso é apenas para fins de demonstração. Ele foi projetado propositadamente para não mostrar como os erros são exibidos em. CodePipeline

Para criar um segundo grupo de implantação no CodeDeploy
  1. Abra o CodeDeploy console em https://console.aws.amazon.com/codedeploy.

  2. Selecione Applications (Aplicativos) e, na lista de aplicativos, selecione MyDemoApplication.

  3. Selecione a guia Deployment groups (Grupos de implantação), depois escolha Create deployment group (Criar grupo de implantação).

  4. Na página Create deployment group (Criar grupo de implantação), em Deployment group name (Nome do grupo de implantação), insira um nome para o segundo grupo de implantação (por exemplo, CodePipelineProductionFleet).

  5. Em Função de serviço, escolha a mesma função de CodeDeploy serviço que você usou para a implantação inicial (não a função CodePipeline de serviço).

  6. Em Deployment type (Tipo de implantação), selecione In-place (No local).

  7. Em Environment configuration (Configuração do ambiente), selecione Amazon EC2 Instances (Instâncias do Amazon EC2). Escolha Name (Nome) na caixa Key (Chave) e, na caixa Value (Valor), escolha MyCodePipelineDemo na lista. Deixe a configuração padrão para Deployment settings (Configurações da implantação).

  8. Em Deployment configuration (Configuração de implantação), selecione CodeDeployDefault.OneAtaTime.

  9. Em Load Balancer, desmarque Enable load balancing (Habilitar balanceamento de carga).

  10. Selecione Criar grupo de implantação.

Adicionar o grupo de implantação como outro estágio ao pipeline

Agora que você possui outro grupo de implantação, poderá adicionar um estágio que usa esse grupo para implantar nas mesmas instâncias do EC2 usadas anteriormente. Você pode usar o CodePipeline console ou o AWS CLI para adicionar esse estágio.

Criar um terceiro estágio (console)

Você pode usar o CodePipeline console para adicionar um novo estágio que usa o novo grupo de implantação. Como esse grupo de implantação está implantando nas instâncias do EC2 que você já usou, a ação de implantação neste estágio falhará.

  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, MyFirstPipeline.

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

  4. Na página Edit (Editar), escolha + Add stage (+ Adicionar estágio) para adicionar um estágio logo depois do estágio de implantação.

  5. Em Add stage (Adicionar estágio), em Stage name (Nome do estágio), insira Production. Escolha Add stage (Adicionar estágio).

  6. No novo estágio, escolha + Add action group (+ Adicionar grupo de ação).

  7. Em Edit action (Editar ação), em Action name (Nome da ação), insira Deploy-Second-Deployment. Em Provedor de ação, em Implantar, escolha CodeDeploy.

  8. Na CodeDeploy seção, em Nome MyDemoApplication do aplicativo, escolha na lista suspensa, como você fez quando criou o pipeline. Em Deployment group (Grupo de implantação), selecione o grupo de implantação que você acabou de criar, CodePipelineProductionFleet. Em Input artifacts (Artefatos de entrada), escolha o artefato de entrada da ação de origem. Escolha Salvar.

  9. Na página Edit (Editar), escolha Save (Salvar). Em Save pipeline changes (Salvar alterações de pipeline), escolha Save (Salvar).

  10. Embora o novo estágio tenha sido adicionado ao seu pipeline, um status de Ainda não executado é exibido, pois nenhuma alteração acionou outra execução do pipeline. Você deve reexecutar manualmente a última revisão para ver como o pipeline editado é executado. Na página de detalhes do pipeline, selecione Lançar alteração e, depois, Lançar quando solicitado. Essa ação executa a revisão mais recente disponível em cada local de origem especificado em uma ação de origem do pipeline.

    Como alternativa, para usar o AWS CLI para executar novamente o pipeline, a partir de um terminal em sua máquina Linux, macOS ou Unix local, ou de um prompt de comando em sua máquina Windows local, execute o start-pipeline-execution comando, especificando o nome do pipeline. Isso executa o aplicativo em seu bucket de origem por meio do pipeline pela segunda vez.

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    Esse comando retorna um pipelineExecutionId objeto.

  11. Volte ao CodePipeline console e, na lista de pipelines, escolha abrir MyFirstPipelinea página de visualização.

    O pipeline mostra três estágios e o estado do artefato em execução através destes três estágios. Pode levar até cinco minutos para que o pipeline execute todas os estágios. Você vê que a implantação é bem-sucedida nos dois primeiros estágios, da mesma forma que antes, mas o estágio Production (Produção) mostra que a ação Deploy-Second-Deployment falhou.

  12. Na ação Deploy-Second-Deployment, selecione Detalhes. Você será redirecionado para a página da CodeDeploy implantação. Nesse caso, a falha resulta da implantação do primeiro grupo de instâncias em todas as instâncias do EC2, sem deixar qualquer instância para o segundo grupo de implantação.

    nota

    Esta falha é por projeto, para demonstrar o que acontece quando ocorre uma falha em um estágio do pipeline.

Criar um terceiro estágio (CLI)

Embora usar o AWS CLI para adicionar um estágio ao seu pipeline seja mais complexo do que usar o console, ele fornece mais visibilidade da estrutura do pipeline.

Para criar um terceiro estágio para seu pipeline
  1. Abra uma sessão de terminal na máquina local do Linux, do macOS ou do Unix ou um prompt de comando na máquina local do Windows e execute o comando get-pipeline para exibir a estrutura de pipeline que você acabou de criar. Em MyFirstPipeline, digite o seguinte comando:

    aws codepipeline get-pipeline --name "MyFirstPipeline"

    Esse comando retorna a estrutura do MyFirstPipeline. A primeira parte da saída deve ser semelhante ao seguinte:

    { "pipeline": { "roleArn": "arn:aws:iam::80398EXAMPLE:role/AWS-CodePipeline-Service", "stages": [ ...

    A última parte da saída inclui os metadados do pipeline e deve ser semelhante ao seguinte:

    ... ], "artifactStore": { "type": "S3" "location": "codepipeline-us-east-2-250656481468", }, "name": "MyFirstPipeline", "version": 4 }, "metadata": { "pipelineArn": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline", "updated": 1501626591.112, "created": 1501626591.112 } }
  2. Copie e cole essa estrutura em um editor de texto plano e salve o arquivo como pipeline.json. Para sua conveniência, salve este arquivo no mesmo diretório onde você executa os comandos aws codepipeline.

    nota

    Você pode canalizar o JSON diretamente em um arquivo com o comando get-pipeline da seguinte forma:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
  3. Copie a seção da etapa Implantar e cole-a após as duas primeiras etapas. Como é uma etapa de implantação, assim como a etapa Implantar, você a usará como um modelo para a terceira etapa.

  4. Altere o nome do estágio e os detalhes do grupo de implantação.

    O exemplo a seguir mostra o JSON que será adicionado ao arquivo pipeline.json após a etapa de implantação. Edite os elementos enfatizados com novos valores. Lembre-se de incluir uma vírgula para separar as definições das etapas Implantar e Produção.

    , { "name": "Production", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-Second-Deployment", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineProductionFleet" }, "runOrder": 1 } ] }
  5. Se você estiver trabalhando com a estrutura do pipeline recuperada por meio do comando get-pipeline, é necessário remover as linhas metadata do arquivo JSON. Caso contrário, o comando update-pipeline não é capaz de utilizá-la. Remova as linhas "metadata": { }, "created", "pipelineARN" e os campos "updated".

    Por exemplo, remova as seguintes linhas da estrutura:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    Salve o arquivo.

  6. Execute o comando update-pipeline especificando o arquivo JSON do pipeline, de modo semelhante ao seguinte:

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    Este comando retorna toda a estrutura do pipeline atualizado.

    Importante

    Não se esqueça de incluir file:// antes do nome de arquivo. Ele é obrigatório nesse comando.

  7. Execute o comando start-pipeline-execution, especificando o nome do pipeline. Isso executa o aplicativo em seu bucket de origem por meio do pipeline pela segunda vez.

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    Esse comando retorna um pipelineExecutionId objeto.

  8. Abra o CodePipeline console e escolha MyFirstPipelinena lista de pipelines.

    O pipeline mostra três estágios e o estado do artefato em execução através destes três estágios. Pode levar até cinco minutos para que o pipeline execute todas os estágios. Embora a implantação seja bem-sucedida nos dois primeiros estágios, da mesma forma que antes, o estágio Produção mostra que a ação Deploy-Second-Deployment falhou.

  9. Na ação Deploy-Second-Deployment, selecione Detalhes para ver os detalhes da falha. Você será redirecionado para a página de detalhes da CodeDeploy implantação. Nesse caso, a falha resulta da implantação do primeiro grupo de instâncias em todas as instâncias do EC2, sem deixar qualquer instância para o segundo grupo de implantação.

    nota

    Esta falha é por projeto, para demonstrar o que acontece quando ocorre uma falha em um estágio do pipeline.

(Opcional) Etapa 6: desabilitar e ativar as transições entre os estágios no CodePipeline

Você pode habilitar ou desabilitar a transição entre estágios em um pipeline. Desabilitar a transição entre os estágios permite que você controle manualmente as transições entre um estágio e outro. Por exemplo, você talvez queira executar os primeiros dois estágios de um pipeline, mas desativar as transições para o terceiro estágio até que você esteja pronto para implantar para produção ou ao solucionar um problema ou uma falha com esse estágio.

Para desativar e ativar as transições entre os estágios em um pipeline CodePipeline
  1. Abra o CodePipeline console e escolha MyFirstPipelinena lista de pipelines.

  2. Na página de detalhes do pipeline, selecione o botão Desativar transição entre a segunda etapa, (Implantar) e a terceira etapa adicionada na seção anterior, (Produção).

  3. Em Disable transition (Desabilitar transição), insira um motivo para desabilitar a transição entre os estágios e depois selecione Disable (Desabilitar).

    A seta entre estágios exibe um ícone e uma alteração de cor e o botão Enable transition (Permitir transição) é exibido.

  4. Faça o upload de sua amostra novamente para o bucket do S3. Como o bucket é versionado, essa mudança inicia o pipeline.

  5. Volte para a página de detalhes de seu pipeline e veja o status dos estágios. A visualização do pipeline é alterada para mostrar o andamento e o sucesso nos primeiros dois estágios, mas nenhuma alteração ocorre no terceiro estágio. Esse processo pode levar alguns minutos.

  6. Permita a transição selecionando o botão Enable transition (Permitir transição) entre os dois estágios. Na caixa de diálogo Permitir transição, selecione Permitir. O estágio começa a ser executado em alguns minutos e tenta processar o artefato que foi executado pelos dois primeiros estágios de pipeline.

    nota

    Se você quiser que esse terceiro estágio seja bem-sucedido, edite o grupo de CodePipelineProductionFleet implantação antes de habilitar a transição e especifique um conjunto diferente de instâncias do EC2 em que o aplicativo é implantado. Para mais informações sobre como fazer isso, consulte Alterar configurações do grupo de implantação. Se você criar mais instâncias do EC2, poderá incorrer em custos adicionais.

Etapa 7: Limpar os recursos

Você pode usar alguns dos recursos criados neste tutorial para o Tutorial: Criar um pipeline de quatro estágios. Por exemplo, você pode reutilizar o CodeDeploy aplicativo e a implantação. Você pode configurar uma ação de criação com um provedor CodeBuild, como, que é um serviço de compilação totalmente gerenciado na nuvem. Você também pode configurar uma ação de criação que use um provedor com um servidor ou um sistema de criação, como o Jenkins.

No entanto, após finalizar este e outros tutoriais, você deverá excluir o pipeline e os recursos usados para não ser cobrado pelo uso contínuo desses recursos. Primeiro, exclua o pipeline, depois o CodeDeploy aplicativo e suas instâncias associadas do Amazon EC2 e, finalmente, o bucket do S3.

Para limpar os recursos usados neste tutorial
  1. Para limpar seus CodePipeline recursos, siga as instruções em Excluir um pipeline em AWS CodePipeline.

  2. Para limpar seus CodeDeploy recursos, siga as instruções em Para limpar recursos (console).

  3. Para excluir o bucket do S3, siga as instruções em Excluir ou esvaziar um bucket. Se você não pretende criar mais pipelines, exclua o bucket do S3 criado para o armazenamento de seus artefatos do pipeline. Para mais informações sobre esse bucket, consulte CodePipeline conceitos .