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 pipeline de CI/CD usando a AWS e o CodePipeline AWS CDK
Criado por Konstantin Zarudaev (AWS), Cizer Pereira (AWS), Lars Kinder (AWS) e Yasha Dabas (AWS)
Repositório de código: AWS CodePipeline com CI/CD | Ambiente: PoC ou piloto | Tecnologias: DevOps |
Workload: código aberto | Serviços da AWS: AWS CodePipeline |
Início
A automatização de seu processo de compilação e lançamento de software com integração e entrega contínuas (CI/CD) oferece suporte a compilações repetíveis e entrega rápida de novos atributos para seus usuários. Você pode testar de forma rápida e fácil cada alteração de código e pode capturar e corrigir bugs antes de lançar seu software. Ao executar cada alteração em seu processo de preparação e lançamento, você pode verificar a qualidade do seu aplicativo ou código de infraestrutura. A CI/CD incorpora uma cultura, um conjunto de princípios operacionais e um conjunto de práticas
Esse padrão define um pipeline reutilizável de integração e entrega contínuas (CI/CD) na Amazon Web Services (AWS). O CodePipeline pipeline da AWS é escrito usando o AWS Cloud Development Kit (AWS CDK) v2
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 AWS ou dos CloudFormation SDKs da AWS. 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 pipelines de CI/CD para implantar seu código e, ao mesmo tempo, garantir que os recursos implantados sigam as melhores práticas. DevOps Depois de implementar o código de exemplo
Pré-requisitos e limitações
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 TypeScript apenas para. Ela não abrange outras linguagens suportadas pelo AWS CDK.
Versões do produto
Use as versões mais recentes das seguintes ferramentas:
AWS Command Line Interface (AWS CLI)
cfn_nag
git-remote-codecommit
Node.js
Arquitetura
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 linting, segurança e testes unitários, todos incluem implantação e validação.](images/pattern-img/d617e735-8624-4722-8a3d-073bcc356328/images/92504aac-03e3-4c95-b225-74505f8dd136.png)
Ferramentas
Serviços da AWS
O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.
CloudFormationA AWS 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 é 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 é um serviço de CI/CD que ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software e automatizar as etapas necessárias para liberar alterações de software continuamente.
A AWS Command Line Interface (AWS CLI) é 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
é uma ferramenta de código aberto que procura padrões em CloudFormation modelos para identificar possíveis problemas de segurança. git-remote-codecommité um utilitário para enviar e extrair código de CodeCommit repositórios estendendo o Git.
O Node.js
é 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 de práticas CodePipeline de CI/CD GitHub da AWS
Práticas recomendadas
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
Tarefa | Descrição | 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
| DevOps engenheiro |
Instale ferramentas usando o AWS Cloud9. | Se você estiver usando o AWS Cloud9
Observação: o AWS Cloud9 deve ter o Node.js e o npm instalados. Para verificar a instalação ou a versão, execute o comando a seguir.
| DevOps engenheiro |
Configure a AWS CLI. | Para configurar a AWS CLI, use as instruções para seu sistema operacional:
| DevOps engenheiro |
Tarefa | Descrição | 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:
Remova o diretório
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.
| DevOps engenheiro |
Faça o bootstrap do ambiente. | Para fazer o bootstrap de um ambiente AWS CDK, execute os seguintes comandos:
Depois de inicializar o ambiente com sucesso, a saída a seguir deve ser exibida.
Para obter mais informações sobre o bootstrapping do AWS CDK, consulte a documentação do AWS CDK. | DevOps engenheiro |
Sintetize um modelo. | Para sintetizar um aplicativo do AWS CDK, use o comando
Você verá a saída a seguir.
| 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.
Depois de executar o comando, você deverá ver uma implantação bem-sucedida das informações de CodePipeline pilha e saída.
| 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
Para corrigir esse erro, configure uma origem remota como
| DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Confirme uma alteração para ativar o pipeline. | Depois de uma implantação inicial bem-sucedida, você deve ter um pipeline de CI/CD completo com uma ramificação
| DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Execute o processo de desenvolvimento usando um Makefile. | Você pode executar todo o pipeline localmente usando o comando Para testar o uso de
| Desenvolvedor de aplicativos, DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Exclua os recursos do aplicativo AWS CDK. | Para limpar seu aplicativo AWS CDK, execute o comando a seguir.
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
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:
|