Neste tutorial, você aprenderá a criar um pipeline de lançamento de software automatizado que implanta um aplicativo de exemplo ao vivo. Você criará o pipeline usando o AWS CodePipeline, um serviço que cria, testa e implanta seu código toda vez que há uma mudança no código. Você usará sua conta do GitHub, um bucket do Amazon Simple Storage Service (S3) ou um repositório do AWS CodeCommit como o local de origem do código do aplicativo de exemplo. Você também usará AWS Elastic Beanstalk como o destino de implementação para o aplicativo de exemplo. Seu pipeline completo poderá detectar mudanças feitas no repositório de origem que contém o aplicativo de exemplo e, em seguida, atualizar automaticamente seu aplicativo de exemplo ao vivo.

A implantação contínua permite implantar revisões automaticamente em um ambiente de produção, sem aprovação explícita de um desenvolvedor, automatizando assim todo o processo de lançamento do software.

Todas as atividades realizadas neste tutorial estão qualificadas para o nível gratuito.

Gerencie seus recursos da AWS

Faça login no Console

Seu pipeline de implantação contínua precisará de um ambiente de destino contendo servidores virtuais ou instâncias do Amazon EC2, onde ele implantará o código de exemplo. Você preparará esse ambiente antes de criar o pipeline.


a. Para simplificar o processo de configuração de instâncias do EC2 para este tutorial, você criará um ambiente de exemplo usando o AWS Elastic Beanstalk. O Elastic Beanstalk permite que você hospede facilmente aplicativos web sem precisar executar, configurar ou operar servidores virtuais por conta própria. Ele faz provisões e opera automaticamente a infraestrutura (por exemplo, servidores virtuais, load balancers etc.) e fornece a pilha de aplicativos (por exemplo, OS, linguagem e estrutura, servidor da web e de aplicativos etc.) para você.


b. Escolha PHP no menu suspenso e clique em Launch Now (Executar agora).

Nota: se você já criou um aplicativo do Elastic Beanstalk antes, clique em: Create New Application (Criar novo aplicativo) no canto superior direito. Nomeie seu aplicativo e crie um novo web server environment (ambiente de servidor da web). Selecione PHP como a sua plataforma e Single Instance (Instância única) como seu tipo de ambiente. Se você estiver planejando fazer login remoto em suas instâncias, selecione um par de chaves. Caso contrário, deixe os valores padrão para as opções restantes e crie o ambiente para o seu pipeline de implementação contínua.

continuous-delivery-pipeline-1

(clique para ampliar)

continuous-delivery-pipeline-1

c. O Elastic Beanstalk começará a criar um ambiente de exemplo para você implantar seu aplicativo. Ele criará uma instância do Amazon EC2, um grupo de segurança, um grupo do Auto Scaling, um bucket do Amazon S3, alarmes do Amazon CloudWatch e um nome de domínio para o seu aplicativo.

Nota: levará vários minutos para esta tarefa ser concluída.

continuous-delivery-pipeline-1c

(clique para ampliar)

continuous-delivery-pipeline-1c

Nesta etapa, você recuperará uma cópia do código do aplicativo de exemplo e escolherá uma fonte para hospedar o código. O pipeline pega o código da origem e, em seguida, executa ações nele.

Você pode usar uma das três opções como sua origem: um repositório GitHub, um bucket do Amazon S3 ou um repositório do AWS CodeCommit. Selecione sua preferência e siga as etapas abaixo:

 

  • GitHub

    a. Se você deseja usar sua conta do GitHub:

    continuous-delivery-pipeline-2a

    (clique para ampliar)

    continuous-delivery-pipeline-2a
  • Amazon S3

    a. Se você planeja usar o Amazon S3 como sua origem, você deverá recuperar o código de exemplo do repositório do AWS GitHub, salvá-lo no seu computador e fazer upload dele em um bucket do Amazon S3.

    continuous-delivery-pipeline-2a1

    (clique para ampliar)

    continuous-delivery-pipeline-2a1

    b. Salve os arquivos de origem em seu computador:

    • Clique no arquivo chamado aws-codepipeline-s3-aws-codedeploy_linux.zip 
    • Clique em View Raw (Visualizar bruto).
    • Salve o arquivo de exemplo em seu computador local.
    continuous-delivery-pipeline-2b2

    (clique para ampliar)

    continuous-delivery-pipeline-2b2

    c. Clique aqui para abrir o console do Amazon S3 e criar seu bucket do Amazon S3:

    • Clique em Create Bucket (Criar bucket)
    • Bucket Name (Nome do bucket): digite um nome exclusivo para o seu bucket, como awscodepipeline-demobucket-variables.  Todos os nomes de bucket no Amazon S3 devem ser exclusivos, então use um dos seus próprios nome e não o nome exibido no exemplo.
    • Region (Região): no menu suspenso, selecione a região onde você criará seu pipeline, como US Standard (Padrão dos EUA)
    • Clique em Criar.
    continuous-delivery-pipeline-2d

    (clique para ampliar)

    continuous-delivery-pipeline-2d

    d. O console exibe o bucket recém-criado, que está vazio.

    • Clique em Properties (Propriedades)
    • Expanda Versioning (Versionamento) e selecione Enable Versioning (Habilitar versionamento). Quando o versionamento está habilitado, o Amazon S3 salva todas as versões de cada objeto no bucket.
    continuous-delivery-pipeline-2g

    (clique para ampliar)

    continuous-delivery-pipeline-2g

    e. Agora você fará upload do código de exemplo para o bucket do Amazon S3: 

    • Clique em Upload (Fazer upload).
    • Siga as instruções na tela para fazer upload do arquivo .zip contendo o código de exemplo obtido por download do GitHub.
    continuous-delivery-pipeline-2f

    (clique para ampliar)

    continuous-delivery-pipeline-2f
  • AWS CodeCommit

    a. Se você planeja usar o AWS CodeCommit como sua origem, você deverá recuperar o código de exemplo do repositório do AWS GitHub, salvá-lo no seu computador e fazer upload dele em um repositório do AWS CodeCommit.

    continuous-delivery-pipeline-2a1

    (clique para ampliar)

    continuous-delivery-pipeline-2a1

    b. Salve os arquivos de origem em seu computador:

    • Selecione o arquivo chamado aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • Selecione View Raw (Visualizar bruto).
    • Salve o arquivo de exemplo em seu computador local.
    continuous-delivery-pipeline-2b2

    (clique para ampliar)

    continuous-delivery-pipeline-2b2

    d. Clique aqui para abrir o console do AWS CodeCommit e selecione Get Started (Iniciar).

    continuous-delivery-pipeline-2b3

    (clique para ampliar)

    continuous-delivery-pipeline-2b3

    e. Na página Create new repository (Criar novo repositório):

    • Repository name (Nome do repositório): insira PipelineRepo.
    • Selecione Create repository (Criar repositório).
    continuous-delivery-pipeline-2c3

    (clique para ampliar)

    continuous-delivery-pipeline-2c3

    f. Conecte-se ao seu repositório e, em seguida, envie uma cópia do arquivo de exemplo para ele.  Para obter instruções, consulte Connect to an AWS CodeCommit Repository (Conectar a um repositório do AWS CodeCommit).

Nesta etapa, você criará e configurará um pipeline simples com duas ações: source (originar) e deploy (implantar). Você fornecerá ao CodePipeline os locais de seu repositório de origem e ambiente de implementação.


a. Clique aqui para abrir o console do AWS CodePipeline.

  • Na página de boas-vindas, clique em Create pipeline (Criar pipeline)
  • Se esta for a primeira vez que você usa o AWS CodePipeline, uma página de introdução será exibida em vez da página de boas-vindas. Clique em Get started (Iniciar).
continuous-delivery-pipeline-3

(clique para ampliar)

continuous-delivery-pipeline-3

b. Na página Step 1: Name (Etapa 1: nome):

  • Pipeline name (Nome de pipeline): insira o nome do seu pipeline, DemoPipeline. 
  • Clique em Next Step (Próxima etapa).

Nota: depois de criar um pipeline, não é possível alterar o nome dele.

continuous-delivery-pipeline-3b

(clique para ampliar)

continuous-delivery-pipeline-3b

c. Na página Step 2: Source (Etapa 2: origem), selecione o local da origem selecionada e siga as etapas abaixo:

  • GitHub

    Source Provider (Provedor de origem): GitHub

    • Na seção Connect to GitHub (Conectar ao GitHub), clique em Connect to GitHub (Conectar ao GitHub).
    • Uma nova janela do navegador abrirá para conectar ao GitHub. Caso o login seja solicitado, forneça suas credenciais do GitHub. 
    • Você será solicitado a autorizar o acesso do aplicativo à sua conta. Escolha Autorizar aplicativo.
    continuous-delivery-pipeline-3c

    (clique para ampliar)

    continuous-delivery-pipeline-3c

    Especifique o repositório e o ramo:

    • Repository (Repositório): na lista suspensa, selecione o repositório do GitHub que deseja utilizar como localização da origem de seu pipeline. Clique no repositório bifurcado em sua conta do GitHub que contém o código de exemplo chamado aws-codepipeline-s3-aws-codedeploy_linux
    • Branch (Ramo): na lista suspensa, escolha o ramo que você deseja usar, mestre.
    • Clique em Next Step (Próxima etapa).
    continuous-delivery-pipeline-3e

    (clique para ampliar)

    continuous-delivery-pipeline-3e
  • Amazon S3

    Source Provider (Provedor de origem): Amazon S3.

    • Amazon S3 location (Localização do Amazon S3): Digite o nome do bucket do Amazon S3 que você criou seguido pelo arquivo de exemplo copiado para esse bucket (aws-codepipeline-s3-aws-codedeploy_linux.zip). Por exemplo, se você nomear seu bucket como awscodepipeline-demobucket-variable, então você digitaria: s3://awscodepipeline-demobucket-variable/aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • Clique em Next Step (Próxima etapa).
    continuous-delivery-pipeline-3c2

    (clique para ampliar)

    continuous-delivery-pipeline-3c2
  • AWS CodeCommit

    Source provider (Provedor de origem): AWS CodeCommit.

    • Repository name (Nome do repositório): escolha o nome do seu repositório do AWS CodeCommit. 
    • Branch name (Nome do ramo): escolha o nome do ramo que contém o arquivo de exemplo.
    • Clique em Next Step (Próxima etapa).
    continuous-delivery-pipeline-3c3

    (clique para ampliar)

    continuous-delivery-pipeline-3c3

d. Um verdadeiro pipeline de implantação contínua requer um estágio de construção, onde o código é compilado e testado na unidade. O CodePipeline permite que você conecte seu provedor de criação preferencial ao seu pipeline. No entanto, neste tutorial, você ignorará o estágio de construção.

  • Na página Step 3: Build (Etapa 3: construir), escolha No Build (Sem construção).
  • Clique em Next Step (Próxima etapa).

 

continuous-delivery-pipeline-3f

(clique para ampliar)

continuous-delivery-pipeline-3f

e. Na página Step 4: Beta (Etapa 4: Beta):

  • Deployment provider (Provedor de implantação): clique em AWS Elastic Beanstalk. 
  • Application name (Nome do aplicativo): clique em My First Elastic Beanstalk Application (Meu primeiro aplicativo do Elastic Beanstalk). 
  • Environment name (Nome do ambiente): clique em Default-Environment.
  • Clique em Next Step (Próxima etapa).

Nota: o nome "Beta" é apenas o nome dado por padrão a esse estágio do pipeline, assim como "Origem" era o nome dado ao primeiro estágio do pipeline.

continuous-delivery-pipeline-3g

(clique para ampliar)

continuous-delivery-pipeline-3g

f. Na página Step 5: Service Role (Etapa 5: função de serviço):

  • Service Role (Função de serviço): clique em Create role (Criar função).
  • Você será redirecionado para uma página do console do IAM que descreve a função AWS-CodePipeline-Service que será criada para você. Clique em Allow (Permitir)
  • Após criar a função, você é redireciondo à página Step 5: Service Role (Etapa 5: função de serviço) onde AWS-CodePipeline-Service aparece no Role name (Nome da função). Clique em Next Step (Próxima etapa).

Nota: a criação da Service role (Função de serviço) é necessária apenas na primeira vez que você cria um pipeline no AWS CodePipeline. Se uma função de serviço já tiver sido criada, você poderá escolhê-la na lista suspensa de funções. Como a lista suspensa exibirá todas as funções do serviço do IAM associado à sua conta, se você escolher um nome diferente do padrão, certifique-se de que o nome é reconhecível como a função de serviço para o AWS CodePipeline.

continuous-delivery-pipeline-3fa

(clique para ampliar)

continuous-delivery-pipeline-3fa

Nesta etapa, você executará seu pipeline. Após seu pipeline ter sido criado, ele é executado automaticamente. Primeiro, ele detecta o código do aplicativo de exemplo no seu local de origem, agrupa os arquivos e os move para o segundo estágio que você definiu. Durante este estágio, ele passa o código para o Elastic Beanstalk, que contém a instância do EC2 que hospedará seu código. O Elastic Beanstalk lida com a implantação do código na instância do EC2.


a. Na página Step 6: Review (Etapa 6: revisar), reveja as informações e clique em Create pipeline (Criar pipeline).

continuous-delivery-pipeline-4

(clique para ampliar)

continuous-delivery-pipeline-4

b. Depois que o pipeline é criado, a página de status do pipeline é exibida e o pipeline é executado automaticamente. Você pode ver o progresso, bem como as mensagens de sucesso e falha, conforme o pipeline realiza cada ação.

Para verificar se o seu pipeline foi executado com sucesso, monitore o progresso do pipeline conforme ele se move em cada estágio. O status de cada estágio mudará de Ainda não executado para Em andamento e, então, para Bem-sucedido ou Falhou. O pipeline deve concluir a primeira execução dentro de alguns minutos.

continuous-delivery-pipeline-4a

(clique para ampliar)

continuous-delivery-pipeline-4a

c. Na área de status do estágio Beta, clique em AWS Elastic Beanstalk

continuous-delivery-pipeline-4a2

(clique para ampliar)

continuous-delivery-pipeline-4a2

d. O console do AWS Elastic Beanstalk é aberto com os detalhes da implantação.

  • Clique no ambiente que você criou anteriormente, chamado Default-Environment
continuous-delivery-pipeline-4b

(clique para ampliar)

continuous-delivery-pipeline-4b

e. Clique no URL que aparece na parte superior direita da página para visualizar o site de exemplo que você implantou.

continuous-delivery-pipeline-6e

(clique para ampliar)

continuous-delivery-pipeline-6e

Nesta etapa, você revisará o código de exemplo e confirmará a mudança no seu repositório. O CodePipeline detectará seu código de exemplo atualizado e, em seguida, iniciará automaticamente a implantação em sua instância do EC2 por meio do Elastic Beanstalk. 

Observe que a página da web de exemplo que você implementou se refere ao AWS CodeDeploy, um serviço que automatiza as implantações de códigos. No CodePipeline, o CodeDeploy é uma alternativa ao uso do Elastic Beanstalk para ações de implantação. Vamos atualizar o código de exemplo para que ele afirme corretamente que você implantou o exemplo usando o Elastic Beanstalk.

  • GitHub

    a. Visite sua própria cópia do repositório que você bifurcou no GitHub.

    • Abra index.html
    • Selecione o ícone Edit (Editar).
    continuous-delivery-pipeline-5b1

    (clique para ampliar)

    continuous-delivery-pipeline-5b1

    b. Atualize a página da web copiando e colando o seguinte texto na linha 30: 

    Você criou com sucesso um pipeline que recuperou esse aplicativo de origem do GitHub e o implantou em uma instância do Amazon EC2 usando o AWS Elastic Beanstalk. Você está uma etapa mais perto de praticar a implantação contínua!

    continuous-delivery-pipeline-5c

    (clique para ampliar)

    continuous-delivery-pipeline-5c

    c. Confirme a mudança no seu repositório.

    continuous-delivery-pipeline-5c1

    (clique para ampliar)

    continuous-delivery-pipeline-5c1
  • Amazon S3

    a. Na sua área de trabalho, acesse o arquivo zip obtido por download chamado aws-codepipeline-s3-aws-codedeploy_linux.zip.


    b. Edite o código do aplicativo da web de exemplo:

    • Extraia index.html do arquivo zip e abra-o usando seu editor de texto preferido. 
    • Atualize o texto do cabeçalho que vem depois de "Parabéns!" para:

    “You have successfully created a pipeline that retrieved this source application from Amazon S3 and deployed it to one Amazon EC2 instance using AWS Elastic Beanstalk. You’re one step closer to practicing continuous deployment!” ("Você criou com sucesso um pipeline que recuperou esse aplicativo de origem do Amazon S3 e o implantou em uma instância do Amazon EC2 usando o AWS Elastic Beanstalk. Você está uma etapa mais perto de praticar a implantação contínua!")

    • Copie o arquivo index.html atualizado de volta para aws-codepipeline-s3-aws-codedeploy_linux.zip e substitua a versão antiga do index.html.
    continuous-delivery-pipeline-6b2

    (clique para ampliar)

    continuous-delivery-pipeline-6b2

    c. Faça upload novamente do arquivo editado para o seu bucket do Amazon S3:

    • Volte para o bucket do S3 que você criou anteriormente. 
    • Faça upload do arquivo atualizado aws-codepipeline-s3-aws-codedeploy_linux.zip para o bucket. 

    Nota: como você habilitou o versionamento quando criou o bucket do S3 pela primeira vez, o S3 salvará uma cópia de cada versão de seus arquivos.

    continuous-delivery-pipeline-6c2

    (clique para ampliar)

    continuous-delivery-pipeline-6c2
  • AWS CodeCommit

    a. Acesse o arquivo zip contendo o código de exemplo obtido por download chamado aws-codepipeline-s3-aws-codedeploy_linux.zip.


    b. Edite o código do aplicativo da web de exemplo:
     
    • Extraia index.html do arquivo zip e abra-o usando seu editor de texto preferido. 
    • Depois atualize o texto do cabeçalho que vem depois de "Parabéns!" para:

    You have successfully created a pipeline that retrieved this source application from AWS CodeCommit and deployed it to one Amazon EC2 instance using AWS Elastic Beanstalk (Você criou com sucesso um pipeline que recuperou esse aplicativo de origem do AWS CodeCommit e o implantou em uma instância do Amazon EC2 usando o AWS Elastic Beanstalk). Você está uma etapa mais perto de praticar a implantação contínua!

    continuous-delivery-pipeline-6b2

    (clique para ampliar)

    continuous-delivery-pipeline-6b2

    c. Confirme e envie o arquivo zip atualizado para o seu repositório do CodeCommit.


d. Retornar ao seu pipeline no console do CodePipeline. Em alguns minutos, você deverá ver a mudança de cor da fonte para azul, indicando que o pipeline detectou as mudanças feitas no seu repositório de origem. Quando isso ocorrer, ele moverá automaticamente o código atualizado para o Elastic Beanstalk.

  • Após o status do pipeline exibir Succeeded (Bem-sucedido), na área de status do estágio Beta, clique em AWS Elastic Beanstalk.
continuous-delivery-pipeline-4a2

(clique para ampliar)

continuous-delivery-pipeline-4a2

e. O console do AWS Elastic Beanstalk é aberto com os detalhes da implantação. Selecione o ambiente que você criou anteriormente, chamado Default-Environment.

continuous-delivery-pipeline-4b

(clique para ampliar)

continuous-delivery-pipeline-4b

f. Clique no URL que aparece na parte superior direita da página para visualizar o site de exemplo novamente.  Seu texto foi atualizado automaticamente em todo o pipeline de implantação contínua!

 

continuous-delivery-pipeline-6e

(clique para ampliar)

continuous-delivery-pipeline-6e

Para evitar cobranças futuras, você excluirá todos os recursos executados ao longo deste tutorial, incluindo o pipeline, o aplicativo do Elastic Beanstalk e a origem configurada para hospedar o código.  


a. Primeiro, você excluirá seu pipeline:

  • Na visualização de pipeline, clique em Edit (Editar)
  • Clique em Delete (Excluir).
  • Digite o nome do seu pipeline e clique em Delete (Excluir).
continuous-delivery-pipeline-5d-6

(clique para ampliar)

continuous-delivery-pipeline-5d-6

b. Em segundo lugar, exclua seu aplicativo do Elastic Beanstalk:

  • Visite o console do Elastic Beanstalk. 
  • Clique em Actions (Ações).
  • Depois clique em Terminate Environment (Encerrar ambiente).
continuous-delivery-pipeline-6

(clique para ampliar)

continuous-delivery-pipeline-6
  • Amazon S3

    c. Se você criou um bucket do S3 para este tutorial, exclua o bucket que você criou:

    • Visite o console do S3. 
    • Clique com o botão direito do mouse sobre o nome do bucket e selecione Delete Bucket (Excluir bucket)
    • Quando uma mensagem de confirmação aparecer, digite o nome do bucket e clique em Excluir.
    continuous-delivery-pipeline-6d

    (clique para ampliar)

    continuous-delivery-pipeline-6d
  • AWS CodeCommit

    c. Se você criou um repositório do AWS CodeCommit para este tutorial, visite o console do CodeCommit e exclua o repositório que você criou:

    continuous-delivery-pipeline-7a

    (clique para ampliar)

    continuous-delivery-pipeline-7a

    c. No painel de navegação, selecione Settings (Configurações).

    • Clique em Delete Repository (Excluir repositório).
    • Uma janela de confirmação será exibida. Digite o nome do seu repositório e clique em Delete (Excluir).
    continuous-delivery-pipeline-7b

    (clique para ampliar)

    continuous-delivery-pipeline-7b

Você criou com sucesso um pipeline de lançamento de software automatizado usando o AWS CodePipeline! Usando o CodePipeline, você criou um pipeline que usa o GitHub, o Amazon S3 ou o AWS CodeCommit como o local de origem para o código do aplicativo e depois implanta o código em uma instância do Amazon EC2 gerenciada pelo AWS Elastic Beanstalk. O pipeline implantará automaticamente seu código toda vez que houver uma mudança de código. Você está uma etapa mais perto de praticar a implantação contínua!

Agora que você aprendeu a criar um pipeline simples usando o AWS CodePipeline, você pode aprender mais visitando os recursos abaixo.

  • Crie um pipeline de quatro estágios mais avançado seguindo este guia. Este pipeline usa um repositório GitHub para a origem, um servidor de construção Jenkins para criar e testar o projeto e um aplicativo do AWS CodeDeploy para implantar o código criado em um servidor de preparação.
  • Gire rapidamente um pipeline de quatro estágios com um servidor de construção Jenkins usando nosso Pipeline Starter Kit (Kit inicial de pipeline).
  • Saiba mais sobre Entrega contínua.
Sim
Não