

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

# Configure um CI/CD pipeline usando a AWS CodePipeline e o AWS CDK
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk"></a>

*Konstantin Zarudaev, Yasha Dabas, Lars Kinder e Cizer Pereira, Amazon Web Services*

## Início
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-summary"></a>

Automatizar seu processo de criação e lançamento de software com integração e entrega contínuas (CI/CD) supports repeatable builds and rapid delivery of new features to your users. You can quickly and easily test each code change, and you can catch and fix bugs before releasing your software. By running each change through your staging and release process, you can verify the quality of your application or infrastructure code. CI/CDincorpora uma cultura, um conjunto de princípios operacionais e um [conjunto de práticas que ajudam as equipes de](https://aws.amazon.com/devops/#cicd) desenvolvimento de aplicativos a entregar alterações de código com mais frequência e confiabilidade). A implementação também é conhecida como *pipeline de CI/CD*.

Esse padrão define um pipeline reutilizável de integração contínua e entrega contínua (CI/CD) na Amazon Web Services (AWS) com um repositório da AWS. CodeCommit O CodePipeline pipeline da AWS é escrito usando o [AWS Cloud Development Kit (AWS CDK) v2](https://aws.amazon.com/cdk/).

Usando CodePipeline, você pode modelar os diferentes estágios do seu processo de lançamento de software por meio da interface do AWS Management Console, da AWS Command Line Interface (AWS CLI), da CloudFormation AWS ou da AWS. SDKs Esse padrão demonstra a implementação CodePipeline e seus componentes usando o AWS CDK. Além da estrutura de bibliotecas, o AWS CDK inclui um kit de ferramentas (o comando `cdk` CLI), que é a principal ferramenta para interagir com seu aplicativo do AWS CDK. Entre outras funções, o kit de ferramentas oferece a capacidade de converter uma ou mais pilhas em CloudFormation modelos e implantá-las em uma conta da AWS.

O pipeline inclui testes para validar a segurança de suas bibliotecas de terceiros e ajuda a garantir o lançamento rápido e automatizado nos ambientes especificados. Você pode aumentar a segurança geral de seus aplicativos submetendo-os a um processo de validação.

A intenção desse padrão é acelerar o uso de CI/CD pipelines para implantar seu código e, ao mesmo tempo, garantir que os recursos implantados sigam as DevOps melhores práticas. Depois de implementar o [código de exemplo](https://github.com/aws-samples/aws-codepipeline-cicd), você terá uma [AWS CodePipeline](https://aws.amazon.com/codepipeline/) com processos de linting, testes, verificação de segurança, implantação e pós-implantação. Esse padrão também inclui etapas para o Makefile. Usando um Makefile, os desenvolvedores podem reproduzir CI/CD etapas localmente e aumentar a velocidade do processo de desenvolvimento.

## Pré-requisitos e limitações
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um entendimento básico sobre o seguinte:
  + AWS CDK
  + AWS CloudFormation
  + AWS CodePipeline
  + TypeScript

**Limitações**

Esse padrão usa o [AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html) TypeScript apenas para. Ela não abrange outras linguagens suportadas pelo AWS CDK.

**Versões do produto**

Certifique-se de usar as versões mais recentes destas ferramentas:
+ AWS Command Line Interface (AWS CLI)
+ cfn\_nag
+ git-remote-codecommit
+ Node.js

## Arquitetura
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-architecture"></a>

**Pilha de tecnologias de destino**
+ AWS CDK
+ AWS CloudFormation
+ AWS CodeCommit
+ AWS CodePipeline

**Arquitetura de destino**

O pipeline é acionado por uma alteração no CodeCommit repositório da AWS (`SampleRepository`). No início, CodePipeline cria artefatos, se atualiza e inicia o processo de implantação. O pipeline resultante implanta uma solução em três ambientes independentes:
+ Dev – Verificação de código em três etapas no ambiente de desenvolvimento ativo
+ Teste: ambiente de teste de integração e regressão
+ Prod: ambiente de produção

As três etapas incluídas no estágio de desenvolvimento são linting, segurança e testes unitários. Essas etapas são executadas paralelamente para acelerar o processo. Para garantir que o pipeline forneça somente artefatos funcionais, sua execução será interrompida sempre que uma etapa do processo falhar. Depois de uma implantação em fase de desenvolvimento, o pipeline executa testes de validação para verificar os resultados. Em caso de sucesso, o pipeline implantará os artefatos no ambiente de teste, que contém a validação pós-implantação. A etapa final é implantar os artefatos no ambiente do Prod.

O diagrama a seguir mostra o fluxo de trabalho do CodeCommit repositório até os processos de criação e atualização executados por CodePipeline, as três etapas do ambiente de desenvolvimento e a implantação e validação subsequentes em cada um dos três ambientes.

![O ambiente de desenvolvimento inclui análise de código, teste de segurança e teste de unidade, todos com processos de implantação e validação.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/d617e735-8624-4722-8a3d-073bcc356328/images/92504aac-03e3-4c95-b225-74505f8dd136.png)


## Ferramentas
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-tools"></a>

**Serviços da AWS**
+ O [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) ajuda você a configurar recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas as contas e regiões da AWS. Nesse padrão, os CloudFormation modelos podem ser usados para criar um CodeCommit repositório e um pipeline de CodePipeline CI/CD.
+  CodeCommitA [AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é um serviço de controle de versão que ajuda você a armazenar e gerenciar repositórios Git de forma privada, sem precisar gerenciar seu próprio sistema de controle de origem.
+  CodePipelineA [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) é um CI/CD serviço que ajuda você a modelar e configurar rapidamente os diferentes estágios de um lançamento de software e automatizar as etapas necessárias para liberar alterações de software continuamente.
+ A ‭[AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)‭ é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.

**Outras ferramentas**
+ [cfn\_nag](https://github.com/stelligent/cfn_nag) é uma ferramenta de código aberto que procura padrões em CloudFormation modelos para identificar possíveis problemas de segurança.
+ [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html)é um utilitário para enviar e extrair código de CodeCommit repositórios estendendo o Git.
+ [O Node.js](https://nodejs.org/en/docs/) é um ambiente de tempo de JavaScript execução orientado a eventos projetado para criar aplicativos de rede escaláveis.

**Código **

O código desse padrão está disponível no repositório [ CodePipeline de CI/CD práticas GitHub da AWS](https://github.com/aws-samples/aws-codepipeline-cicd).

## Práticas recomendadas
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-best-practices"></a>

Analise os recursos, como políticas do AWS Identity and Access Management (IAM), para confirmar se eles estão alinhados com as melhores práticas organizacionais.

## Épicos
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-epics"></a>

### Instalar as ferramentas
<a name="install-tools"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale ferramentas no Linux ou no macOS. | Se você estiver usando macOS ou Linux, poderá instalar as ferramentas executando o seguinte comando no terminal de sua preferência ou usando o [Homebrew](https://docs.brew.sh/Homebrew-on-Linux) para Linux.<pre>brew install<br />brew install git-remote-codecommit<br />brew install ruby brew-gem<br />brew-gem install cfn-nag</pre> | DevOps engenheiro | 
| Configure a AWS CLI. | Para configurar a AWS CLI, use as instruções para seu sistema operacional:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | DevOps engenheiro | 

### Configure a implantação inicial
<a name="set-up-the-initial-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Faça download ou clonagem do código. | Para obter o código usado por esse padrão, siga um destes procedimentos:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html)<pre>git clone --depth 1 https://github.com/aws-samples/aws-codepipeline-cicd.git</pre><br />Remova o diretório `.git` do repositório clonado.<pre>cd ./aws-codepipeline-cicd<br />rm -rf ./.git</pre><br />Posteriormente, você usará um CodeCommit repositório AWS recém-criado como origem remota. | DevOps engenheiro | 
| Conecte-se à conta da AWS. | Você pode se conectar usando um token de segurança temporário ou autenticação de zona de pouso. Para confirmar que você está usando a conta e a região da AWS corretas, execute os comandos a seguir.<pre>AWS_REGION="eu-west-1"<br />ACCOUNT_NUMBER=$(aws sts get-caller-identity --query Account --output text)<br />echo "${ACCOUNT_NUMBER}"</pre> | DevOps engenheiro | 
| Faça o bootstrap do ambiente. | Para fazer o bootstrap de um ambiente AWS CDK, execute os seguintes comandos:<pre>npm install<br />npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"</pre><br />Depois de inicializar o ambiente com sucesso, a saída a seguir deve ser exibida.<pre>⏳  Bootstrapping environment aws://{account}/{region}...<br />✅  Environment aws://{account}/{region} bootstrapped</pre><br />Para obter mais informações sobre o bootstrapping do AWS CDK, consulte a [documentação do AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html). | DevOps engenheiro | 
| Sintetize um modelo. | Para sintetizar um aplicativo do AWS CDK, use o comando `cdk synth`.<pre>npm run cdk synth</pre><br />Você verá a saída a seguir.<pre>Successfully synthesized to <path-to-directory>/aws-codepipeline-cicd/cdk.out<br />Supply a stack id (CodePipeline, Dev-MainStack) to display its template.</pre> | DevOps engenheiro | 
| Implante a CodePipeline pilha. | Agora que você inicializou e sintetizou o CloudFormation modelo, você pode implantá-lo. A implantação criará o CodePipeline pipeline e um CodeCommit repositório, que serão a fonte e o gatilho do pipeline.<pre>npm run cdk -- deploy CodePipeline --require-approval never</pre><br />Depois de executar o comando, você deverá ver uma implantação bem-sucedida da CodePipeline pilha e das informações de saída. `CodePipeline.RepositoryName`Fornece o nome do CodeCommit repositório na conta da AWS.<pre>CodePipeline: deploying...<br />CodePipeline: creating CloudFormation changeset...<br />✅  CodePipeline<br />Outputs:<br />CodePipeline.RepositoryName = SampleRepository<br />Stack ARN:<br />arn:aws:cloudformation:REGION:ACCOUNT-ID:stack/CodePipeline/STACK-ID</pre> | DevOps engenheiro | 
| Configure o CodeCommit repositório e a ramificação remotos. | Depois de uma implantação bem-sucedida, CodePipeline iniciará a primeira execução do pipeline, que você pode encontrar no [ CodePipeline console da AWS](https://eu-west-1.console.aws.amazon.com/codesuite/codepipeline/pipelines). Como o AWS CDK e CodeCommit não iniciam uma ramificação padrão, essa execução inicial do pipeline falhará e retornará a seguinte mensagem de erro.<pre>The action failed because no branch named main was found in the selected AWS CodeCommit repository SampleRepository. Make sure you are using the correct branch name, and then try again. Error: null</pre><br />Para corrigir esse erro, configure uma origem remota como `SampleRepository` e crie a ramificação `main` necessária.<pre>RepoName=$(aws cloudformation describe-stacks --stack-name CodePipeline --query "Stacks[0].Outputs[?OutputKey=='RepositoryName'].OutputValue" --output text)<br />echo "${RepoName}"<br />#<br />git init<br />git branch -m master main<br />git remote add origin codecommit://${RepoName}<br />git add .<br />git commit -m "Initial commit"<br />git push -u origin main</pre> | DevOps engenheiro | 

### Teste o pipeline implantado CodePipeline
<a name="test-the-deployed-codepipeline-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Confirme uma alteração para ativar o pipeline. | Depois de uma implantação inicial bem-sucedida, você deve ter um CI/CD pipeline completo com uma `main` ramificação `SampleRepository` como ramificação de origem. Assim que você confirmar as alterações na ramificação `main`, o pipeline iniciará e executará a seguinte sequência de ações:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | DevOps engenheiro | 

### Teste localmente usando um Makefile
<a name="test-locally-by-using-a-makefile"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute o processo de desenvolvimento usando um Makefile. | Você pode executar todo o pipeline localmente usando o comando`make` ou pode executar uma etapa individual (por exemplo, `make linting`).<br />Para testar o uso de `make`, execute as seguintes ações:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | Desenvolvedor de aplicativos, DevOps engenheiro | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os recursos do aplicativo AWS CDK. | Para limpar seu aplicativo AWS CDK, execute o comando a seguir.<pre>cdk destroy --all</pre><br />Esteja ciente de que os buckets do Amazon Simple Storage Service (Amazon S3) criados durante a inicialização não são excluídos automaticamente. Eles precisam de uma política de retenção que permita a exclusão, ou você precisa excluí-los manualmente na sua conta da AWS. | DevOps engenheiro | 

## Solução de problemas
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| O modelo não está funcionando conforme o esperado. | Se algo der errado e o modelo não estiver funcionando, verifique se você tem o seguinte:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | 

## Recursos relacionados
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-resources"></a>
+ [Introdução às tarefas comuns do Centro de Identidade do IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)
+ [ CodePipeline Documentação da AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)