Tutorial: Criar um pipeline simples (repositório do CodeCommit)
Neste tutorial, use o CodePipeline para implantar o código mantido em um repositório do CodeCommit para uma única instância do Amazon EC2. O pipeline é acionado quando você envia uma alteração ao repositório do CodeCommit. O pipeline implanta as alterações em uma instância do Amazon EC2 usando o CodeDeploy como o serviço de implantação.
Importante
Como parte da criação de um pipeline, um bucket de artefatos do S3 fornecido pelo cliente será usado pelo CodePipeline para artefatos. (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 pipeline, garanta que o bucket de artefatos do S3 seja de propriedade de Contas da AWS seguras e confiáveis.
O pipeline tem dois estágios:
-
Um estágio de origem (Origem) para a ação de origem do CodeCommit.
-
Um estágio de implantação (Implantar) para a ação de implantação do CodeDeploy.
A maneira mais fácil de começar a usar o AWS CodePipeline é usar o assistente Criar pipeline no console do CodePipeline.
nota
Antes de começar, verifique se o cliente do Git está configurado para funcionar com o CodeCommit. Para obter instruções, consulte Configuração do CodeCommit.
Etapa 1: criar um repositório do CodeCommit
Primeiro, crie um repositório no CodeCommit. Seu pipeline obtém o código-fonte desse repositório quando for executado. Crie também um repositório local onde manter e atualizar o código antes de enviá-lo ao repositório do CodeCommit.
Para criar um repositório do CodeCommit
-
Abra o console do CodeCommit em https://console.aws.amazon.com/codecommit/.
-
No seletor da região, selecione a Região da AWS onde você deseja criar o repositório e o pipeline. Para obter mais informações, consulte Regiões da AWS e endpoints.
-
Na página Repositories (Repositórios), selecione Create repository (Criar repositório).
-
Na página Create repository (Criar repositório), em Repository name (Nome do repositório), insira um nome para o repositório (por exemplo
MyDemoRepo). -
Escolha Criar.
nota
As etapas restantes neste tutorial usam MyDemoRepo como nome do repositório do CodeCommit. Se você escolher um nome diferente, certifique-se de usá-lo durante todo este tutorial.
Como configurar um repositório local
Nesta etapa, você vai configurar um repositório local para se conectar ao repositório remoto do CodeCommit.
nota
Não é necessário configurar um repositório local. Você também pode usar o console do para fazer upload dos arquivos, conforme descrito em Etapa 2: Adicionar um código de exemplo ao repositório do CodeCommit.
-
Com o novo repositório aberto no console, escolha Clone URL (Clonar URL) no canto superior direito da página e, depois, escolha Clone SSH (Clonar SSH). O endereço para clonar o repositório Git é copiado na área de transferência.
-
No terminal ou na linha de comando, navegue até um diretório local onde você deseja que seu repositório local seja armazenado. Neste tutorial, usamos
/tmp. -
Execute o comando a seguir para clonar o repositório, substituindo o endereço SSH pelo que você copiou na etapa anterior. Esse comando cria um diretório chamado
MyDemoRepo. Copie um aplicativo de exemplo nesse diretório.git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/MyDemoRepo
Etapa 2: Adicionar um código de exemplo ao repositório do CodeCommit
Nesta etapa, você vai baixar o código para uma aplicação de exemplo que foi criada para uma demonstração de exemplo do CodeDeploy e adicioná-lo ao repositório do CodeCommit.
-
Depois, faça download de um exemplo e salve-o em uma pasta ou um diretório no computador local.
-
Escolha uma das opções a seguir. Selecione
SampleApp_Linux.zipse deseja seguir as etapas deste tutorial para instâncias do Linux.-
Se quiser fazer a implantação em instâncias do Amazon Linux usando o CodeDeploy, baixe a aplicação de exemplo aqui: SampleApp_Linux.zip.
-
Se quiser fazer a implantação em instâncias do Windows Server usando o CodeDeploy, baixe a aplicação de exemplo aqui: SampleApp_Windows.zip.
A aplicação de exemplo contém os seguintes arquivos para implantação com o CodeDeploy:
-
appspec.yml: o arquivo de especificação de aplicação (arquivo AppSpec) é um arquivo formatado em YAMLusado pelo CodeDeploy para gerenciar uma implantação. Para obter mais informações sobre o arquivo AppSpec, consulte CodeDeploy AppSpec File reference no Guia do usuário do AWS CodeDeploy. -
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 de implantação do CodeDeploy 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_serverestop_server. -
(Somente exemplo do Windows)
before-install.bat: um script em lote para o evento de ciclo de vida de implantaçãoBeforeInstall, 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.
-
-
-
Faça download do arquivo compactado.
-
-
Descompacte os arquivos de SampleApp_Linux.zip no diretório local criado anteriormente (por exemplo,
/tmp/MyDemoRepoouc:\temp\MyDemoRepo).Certifique-se de alocar os arquivos diretamente em seu repositório local. Não inclua uma pasta
SampleApp_Linux. Na máquina Linux, macOS ou Unix local, por exemplo, a hierarquia de arquivos e diretórios deve ser semelhante a:/tmp └-- MyDemoRepo │-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server -
Para fazer upload dos arquivos para o repositório, use um dos métodos a seguir.
-
Para usar o console do CodeCommit para fazer upload dos arquivos:
-
Abra o console do CodeCommit e selecione o repositório na lista Repositórios.
-
Selecione Add file (Adicionar arquivo) e clique em Upload file (Carregar arquivo).
-
Selecione Choose file (Escolher arquivo) e procure o arquivo. Para adicionar um arquivo em uma pasta, selecione Criar arquivo e, depois, insira o nome da pasta com o nome do arquivo, como
scripts/install_dependencies. Cole o conteúdo do arquivo no novo arquivo.Informe seu nome de usuário e endereço de e-mail para confirmar a alteração.
Escolha Commit changes (Confirmar alterações).
-
Repita esta etapa para cada arquivo.
O conteúdo do repositório deve ter a seguinte aparência:
│-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
-
-
Para usar os comandos do git para fazer upload dos arquivos:
-
Altere diretórios para o seu repositório local:
(For Linux, macOS, or Unix)cd /tmp/MyDemoRepo(For Windows)cd c:\temp\MyDemoRepo -
Execute o seguinte comando para organizar todos os seus arquivos de uma só vez:
git add -A -
Execute o seguinte comando para confirmar os arquivos com uma mensagem de confirmação:
git commit -m "Add sample application files" -
Execute o seguinte comando para enviar os arquivos do repositório local ao repositório do CodeCommit:
git push
-
-
-
Os arquivos que você baixou e adicionou ao repositório local agora foram adicionados à ramificação
mainno repositório do CodeCommitMyDemoRepoestão prontos para inclusão no pipeline.
Etapa 3: Criar uma instância do Linux do Amazon EC2 e instalar o agente do CodeDeploy
Nesta etapa, você vai criar a instância do Amazon EC2 na qual implantará uma aplicação de exemplo. Como parte desse processo, crie um perfil de instância que permita a instalação e o gerenciamento do agente do CodeDeploy na instância. O agente do CodeDeploy é um pacote de software que permite que uma instância seja usada em implantações do CodeDeploy. Você também vai anexar políticas que permitem que a instância busque arquivos que o agente do CodeDeploy usa para implantar a aplicação e permitir que a instância seja gerenciada pelo SSM.
Como criar uma função de instância
-
Abra o console IAM em https://console.aws.amazon.com/iam/.
-
No painel do console, escolha Roles (Funções).
-
Selecione Criar perfil.
-
Em Selecionar tipo de entidade confiável, selecione AWS service (Serviço da AWS). Em Escolha um caso de uso, selecione EC2. Em Select your use case (Selecione seu caso de uso), escolha EC2. Escolha Próximo: Permissões.
-
Procure e selecione a política chamada
AmazonEC2RoleforAWSCodeDeploy. -
Procure e selecione a política chamada
AmazonSSMManagedInstanceCore. Escolha Próximo: etiquetas. -
Selecione 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 perfil.
Como iniciar uma instância
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.
-
Na navegação lateral, escolha Instâncias e selecione Executar instâncias na parte superior da página.
-
Em Nome, insira
MyCodePipelineDemo. Isso atribui à instância uma tag Chave deNamee uma tag Valor deMyCodePipelineDemo. Posteriormente, você criará um aplicativo CodeDeploy que implantará o aplicativo de amostra nessa instância. O CodeDeploy seleciona as instâncias a serem implantadas com base nas tags. -
Em Imagens da aplicação e do sistema operacional (imagem de máquina do Amazon), localize a opção AMI do Amazon Linux com o logotipo da AWS e verifique se ela está selecionada. (Essa AMI é descrita como AMI do Amazon Linux 2 (HVM) e é identificada como “Elegível para o nível gratuito”.)
-
Em Tipo de instância, selecione o tipo
t2.microelegível para o nível gratuito como configuração de hardware para a instância. -
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.
-
Em Configurações de rede, faça o seguinte:
Em Atribuir IP público automaticamente, verifique se o status é Habilitado.
Selecione o grupo de segurança criado, escolha HTTP e, em Tipo de origem, escolha Meu IP.
-
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). -
Em Resumo, em Número de instâncias, insira
1. -
Escolha Iniciar instância.
-
É 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 pararunninge 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).)
Etapa 4: Criar uma aplicação no CodeDeploy
No CodeDeploy, aplicação é um recurso que contém a aplicação de software que você deseja implantar. Posteriormente, use essa aplicação com o CodePipeline para automatizar implantações da aplicação de exemplo na instância do Amazon EC2.
Primeiro, crie um perfil que permita ao CodeDeploy executar implantações. Depois, crie uma aplicação do CodeDeploy.
Como criar um perfil de serviço do CodeDeploy
-
Abra o console do IAM em https://console.aws.amazon.com/iam/.
-
No painel do console, escolha Roles (Funções).
-
Selecione Criar perfil.
-
Em Selecionar entidade confiável, escolha AWS service (Serviço da AWS). Em Caso de uso, selecione CodeDeploy. Selecione CodeDeploy nas opções listadas. Escolha Próximo. A política gerenciada
AWSCodeDeployRolejá está anexada à função. -
Selecione Próximo.
-
Insira um nome para a função (por exemplo,
CodeDeployRole) e escolha Create role (Criar função).
Como criar uma aplicação no CodeDeploy
-
Abra o console do CodeDeploy em https://console.aws.amazon.com/codedeploy.
-
Se a página Aplicações não for exibida, no menu, selecione Aplicações.
-
Escolha Criar aplicativo.
-
Em Nome do aplicativo, insira
MyDemoApplication. -
Em Plataforma de computação, selecione EC2/On-Premises.
-
Escolha Criar aplicativo.
Como criar um grupo de implantação do CodeDeploy.
Um grupo de implantação é um recurso que define configurações relacionadas à implantação, como em quais instâncias implantar e com que rapidez implantá-las.
-
Na página que mostra o aplicativo, selecione Create deployment group (Criar grupo de implantação).
-
Em Nome do grupo de implantação, insira
MyDemoDeploymentGroup. -
Em Perfil de serviço, selecione o perfil de serviço criado anteriormente (por exemplo,
).arn:aws:iam::account_ID:role/CodeDeployRole -
Em Deployment type (Tipo de implantação), selecione In-place (No local).
-
Em Environment configuration (Configuração do ambiente), selecione Amazon EC2 Instances (Instâncias do Amazon EC2). No campo, Chave, insira
Name. No campo Valor, insira o nome usado para marcar a instância (por exemplo,MyCodePipelineDemo). -
Em Configuração do agente com o AWS Systems Manager, selecione Agora e programar atualizações. Isso vai instalar o agente na instância. A instância do Linux já está configurada com o agente do SSM e agora será atualizada com o agente do CodeDeploy.
-
Em Deployment configuration (Configuração de implantação), selecione
CodeDeployDefault.OneAtaTime. -
Em Balanceador de carga, verifique se Habilitar balanceamento de carga não está selecionado. Você não precisa configurar um load balancer ou escolher um grupo de destino para este exemplo.
-
Selecione Criar grupo de implantação.
Etapa 5: Criar o primeiro pipeline no CodePipeline
Agora, você está pronto para criar e executar seu primeiro pipeline. Nesta etapa, você vai criar um pipeline que será executado automaticamente quando o código for enviado ao repositório do CodeCommit.
Como criar um pipeline do CodePipeline
Faça login no Console de gerenciamento da AWS e abra o console do CodePipeline em http://console.aws.amazon.com/codesuite/codepipeline/home
. Abra o console do CodePipeline em https://console.aws.amazon.com/codesuite/codepipeline/.
-
Na página Welcome (Bem-vindo), Getting started (Conceitos básicos) ou Pipelines, selecione Create pipeline (Criar pipeline).
-
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.
-
Em Etapa 2: Escolher as configurações do pipeline, em Nome do pipeline, insira
MyFirstPipeline. -
O CodePipeline disponibiliza pipelines dos tipos V1 e V2, que apresentam características e custos diferentes. 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 do CodePipeline, consulte Preços
. -
Em Perfil de serviço, selecione Novo perfil de serviço para permitir que o CodePipeline crie um perfil de serviço no IAM.
-
Deixe as configurações em Advanced settings (Configurações avançadas) como padrão e escolha Next (Próximo).
-
Em Etapa 3: Adicionar etapa de origem, em Provedor de origem, escolha CodeCommit. Em Nome do repositório, selecione o nome do repositório do CodeCommit criado em Etapa 1: criar um repositório do CodeCommit. Em Branch name (Nome da ramificação), escolha
maine, depois, selecione Next step (Próxima etapa).Assim que selecionar o nome do repositório e a ramificação, uma mensagem exibe a regra do Amazon CloudWatch Events a ser criada para esse pipeline.
Em Change detection options (Alterar opções de detecção), deixe os valores padrão. Isso permite que o CodePipeline use o Amazon CloudWatch Events para detectar alterações no repositório de origem.
Escolha Próximo.
-
Em Etapa 4: Adicionar etapa de compilação, escolha Ignorar etapa de compilação e aceite a mensagem de aviso escolhendo Ignorar novamente. Escolha Próximo.
nota
Neste tutorial, você está implantando um código que não requer um serviço de compilação, portanto, ignore esta etapa. No entanto, se o código-fonte precisar ser compilado antes de ser implantado em instâncias, você poderá configurar o CodeBuild
nesta etapa. -
Em Etapa 5: Adicionar etapa de teste, escolha Ignorar etapa de teste e aceite a mensagem de aviso escolhendo Ignorar novamente.
Escolha Próximo.
-
Em Etapa 6: adicionar estágio de implantação, em Provedor de implantação, escolha CodeDeploy. Em Application name (Nome do aplicativo), escolha
MyDemoApplication. Em Deployment group (Grupo de implantação), escolhaMyDemoDeploymentGroupe, depois, selecione Next step (Próxima etapa). -
Em Etapa 7: Revisar, revise as informações e, então selecione Criar pipeline.
-
O pipeline começa a ser executado depois de ser criado. Ele baixa o código do repositório do CodeCommit e cria uma implantação do CodeDeploy na instância do EC2. É possível visualizar o andamento e mensagens de êxito e falha à medida que o exemplo do CodePipeline implanta a página da Web na instância do Amazon EC2 na implantação do CodeDeploy.
Parabéns! Você acabou de criar um pipeline simples no CodePipeline.
Depois, você verifica os resultados.
Para verificar se o seu pipeline foi executado com êxito
-
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.
-
Após Com êxito ser exibido para o status do pipeline, na área do status da etapa Implantar, selecione CodeDeploy. Isso abre o console do CodeDeploy. Se Succeeded (Bem-sucedido) não for exibido, consulte Solução de problemas do CodePipeline.
-
Na guia Implantações, selecione o ID de implantação. Na página da implantação, em Eventos de ciclo de vida da implantação, selecione o ID da instância. Isso abre o console do EC2.
-
Na guia Description (Descrição), em Public DNS (DNS público), copie o endereço (por exemplo,
ec2-192-0-2-1.us-west-2.compute.amazonaws.com) e cole-o na barra de endereços de seu navegador da Web.A página da web exibe a aplicação de exemplo que você baixou e enviou ao repositório do CodeCommit.
Para obter mais informações sobre os estágios, as ações e o funcionamento dos pipelines, consulte Conceitos do CodePipeline.
Etapa 6: Modificar o código no repositório do CodeCommit
O pipeline está configurado para ser executado sempre que forem feitas alterações de código no repositório do CodeCommit. Nesta etapa, você fará alterações no arquivo HTML que faz parte da aplicação de exemplo do CodeDeploy no repositório do CodeCommit. Quando essas alterações são enviadas, o pipeline é executado novamente, e as alterações feitas ficam visíveis no endereço da web acessado anteriormente.
-
Altere diretórios para o seu repositório local:
(For Linux, macOS, or Unix)cd /tmp/MyDemoRepo(For Windows)cd c:\temp\MyDemoRepo -
Use um editor de texto para modificar o arquivo
index.html:(For Linux or Unix)gedit index.html(For OS X)open –e index.html(For Windows)notepad index.html -
Revise o conteúdo do arquivo
index.htmlpara alterar a cor do plano de fundo e parte do texto na página da web e depois salve o arquivo.<!DOCTYPE html> <html> <head> <title>Updated Sample Deployment</title> <style> body { color: #000000; background-color: #CCFFCC; font-family: Arial, sans-serif; font-size:14px; } h1 { font-size: 250%; font-weight: normal; margin-bottom: 0; } h2 { font-size: 175%; font-weight: normal; margin-bottom: 0; } </style> </head> <body> <div align="center"><h1>Updated Sample Deployment</h1></div> <div align="center"><h2>This application was updated using CodePipeline, CodeCommit, and CodeDeploy.</h2></div> <div align="center"> <p>Learn more:</p> <p><a href="https://docs.aws.amazon.com/codepipeline/latest/userguide/">CodePipeline User Guide</a></p> <p><a href="https://docs.aws.amazon.com/codecommit/latest/userguide/">CodeCommit User Guide</a></p> <p><a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/">CodeDeploy User Guide</a></p> </div> </body> </html> -
Confirme e envie as alterações ao repositório do CodeCommit executando os seguintes comandos, um de cada vez:
git commit -am "Updated sample application files"git push
Como verificar se seu pipeline foi executado com êxito
-
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). A execução do pipeline deve ser concluída em alguns minutos.
-
Depois que Succeeded (Bem-sucedido) for exibido para o status da ação, atualize a página de demonstração acessada anteriormente no navegador.
A página da web atualizada é exibida.
Etapa 7: Limpar os recursos
É possível usar alguns dos recursos criados neste tutorial para outros tutoriais neste guia. Por exemplo, é possível reutilizar a aplicação e a implantação do CodeDeploy. No entanto, depois de 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 e, depois, a aplicação do CodeDeploy e a instância do Amazon EC2 associada e, por último, o repositório do CodeCommit.
Para limpar os recursos usados neste tutorial
-
Para limpar os recursos do CodePipeline, siga as instruções em Excluir um pipeline no AWS CodePipeline.
-
Para limpar os recursos do CodeDeploy, siga as instruções em Clean Up Deployment Walkthrough Resources.
-
Para excluir o repositório do CodeCommit, siga as instruções em Excluir um repositório do CodeCommit.
Etapa 8: Outras fontes de leitura
Saiba mais sobre como funciona o CodePipeline:
-
Para obter mais informações sobre os estágios, as ações e o funcionamento dos pipelines, consulte Conceitos do CodePipeline.
-
Para obter informações sobre as ações que podem ser executadas usando o CodePipeline, consulte Integrações aos tipos de ação do CodePipeline.
-
Experimente este tutorial mais avançado, Tutorial: Criar um pipeline de quatro estágios. Ele cria um pipeline de vários estágios incluindo uma etapa que cria o código antes de ser implantado.