Criar pipelines dinâmicos de CI para projetos Java e Python automaticamente - Recomendações da AWS

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

Criar pipelines dinâmicos de CI para projetos Java e Python automaticamente

Criado por Aromal Raj Jayarajan (AWS), Amarnath Reddy (), () e Vijesh Vijayakumaran AWS Nair () MAHESH RAGHUNANDANAN AWS AWS

Repositório de códigos: automated-ci-pipeline-creation

Ambiente: PoC ou piloto

Tecnologias: DevOps; Infraestrutura; Sem servidor

Workload: todas as outras workloads

AWSserviços: AWS CodeBuild; AWS CodePipeline; AWS Lambda; AWS Step Functions; AWS CodeCommit

Resumo

Aviso: não AWS CodeCommit está mais disponível para novos clientes. Os clientes existentes do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais

Esse padrão mostra como criar pipelines dinâmicos de integração contínua (CI) para projetos Java e Python automaticamente AWS usando ferramentas de desenvolvedor.

À medida que as pilhas de tecnologia se diversificam e as atividades de desenvolvimento aumentam, pode se tornar difícil criar e manter pipelines de CI consistentes em toda a organização. Ao automatizar o processo em AWS Step Functions, você pode garantir que seus pipelines de CI sejam consistentes em seu uso e abordagem.

Para automatizar a criação de pipelines dinâmicos de CI, esse padrão usa as seguintes entradas variáveis:

  • Linguagem de programação (somente Java ou Python)

  • Nome do pipeline

  • Etapas necessárias do pipeline

Observação: o Step Functions orquestra a criação do pipeline usando vários AWS serviços. Para obter mais informações sobre os AWS serviços usados nessa solução, consulte a seção Ferramentas desse padrão.

Pré-requisitos e limitações

Pré-requisitos

  • Uma AWS conta ativa

  • Um bucket do Amazon S3 na mesma AWS região em que esta solução está sendo implantada

  • Um diretor do AWS Identity and Access Management (IAM) que tem as AWS CloudFormation permissões necessárias para criar os recursos necessários para essa solução

Limitações

  • Este padrão é compatível somente com projetos Java e Python.

  • As IAM funções provisionadas nesse padrão seguem o princípio do menor privilégio. As permissões IAM das funções devem ser atualizadas com base nos recursos específicos que seu pipeline de CI precisa criar.

Arquitetura

Pilha de tecnologias de destino

  • AWS CloudFormation

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • IAM

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Systems Manager

  • AWS Step Functions

  • AWSLambda

  • Amazon DynamoDB

Arquitetura de destino

O diagrama a seguir mostra um exemplo de fluxo de trabalho para criar pipelines dinâmicos de CI para projetos Java e Python automaticamente AWS usando ferramentas de desenvolvedor.

Fluxo de trabalho para criar pipelines dinâmicos de CI para projetos Java e Python automaticamente AWS usando ferramentas.

O diagrama mostra o seguinte fluxo de trabalho:

  1. Um AWS usuário fornece os parâmetros de entrada para a criação do pipeline de CI em JSON formato. Essa entrada inicia um fluxo de trabalho do Step Functions (máquina de estado) que cria um pipeline de CI usando ferramentas de AWS desenvolvedor.

  2. Uma função do Lambda lê uma pasta chamada input-reference, que é armazenada em um bucket do Amazon S3 e, em seguida, gera um arquivo buildspec.yml. Esse arquivo gerado define os estágios do pipeline de CI e é armazenado novamente no mesmo bucket do Amazon S3 que armazena as referências de parâmetros.

  3. O Step Functions verifica se há alterações nas dependências do fluxo de trabalho de criação do pipeline de CI e atualiza a pilha de dependências conforme necessário.

  4. O Step Functions cria os recursos do pipeline de CI em uma CloudFormation pilha, incluindo um CodeCommit repositório, um CodeBuild projeto e um CodePipeline pipeline.

  5. A CloudFormation pilha copia o código-fonte de amostra para a pilha de tecnologia selecionada (Java ou Python) e o arquivo buildspec.yml para o repositório. CodeCommit

  6. Os detalhes do runtime do pipeline de CI são armazenados em uma tabela do DynamoDB.

Automação e escala

  • Este padrão deve ser usado somente em um único ambiente de desenvolvimento. As alterações de configuração são necessárias para uso em vários ambientes de desenvolvimento.

  • Para adicionar suporte para mais de uma CloudFormation pilha, você pode criar CloudFormation modelos adicionais. Para obter mais informações, consulte Introdução AWS CloudFormation na CloudFormation documentação.

Ferramentas

Ferramentas

  • AWSO Step Functions é um serviço de orquestração sem servidor que ajuda você a combinar funções AWS Lambda e outros AWS serviços para criar aplicativos essenciais para os negócios.

  • AWSO Lambda é um serviço de computação que ajuda você a executar código sem precisar provisionar ou gerenciar servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

  • AWS CodeBuildé um serviço de compilação totalmente gerenciado que ajuda você a compilar o código-fonte, executar testes de unidade e produzir artefatos prontos para implantação.

  • AWS CodeCommité 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.

  • AWS CodePipelineajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software e automatizar as etapas necessárias para liberar as alterações de software continuamente.

  • AWSO Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

  • AWSO Key Management Service (AWSKMS) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

  • AWS CloudFormationajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas AWS as contas e regiões.

  • O Amazon DynamoDB é um serviço SQL sem banco de dados totalmente gerenciado que fornece desempenho rápido, previsível e escalável.

  • AWSO Systems Manager Parameter Store fornece armazenamento seguro e hierárquico para gerenciamento de dados de configuração e gerenciamento de segredos.

Código

O código desse padrão está disponível no GitHub automated-ci-pipeline-creationrepositório. O repositório contém os CloudFormation modelos necessários para criar a arquitetura de destino descrita nesse padrão.

Práticas recomendadas

Épicos

TarefaDescriçãoHabilidades necessárias

Crie um bucket do Amazon S3.

Crie um bucket do Amazon S3 (ou use um bucket existente) para armazenar os CloudFormation modelos, o código-fonte e os arquivos de entrada necessários para a solução.

Para obter mais informações, consulte Etapa 1: Criar o seu primeiro bucket do S3 na documentação do Amazon S3.

Observação: o bucket do Amazon S3 deve estar na mesma AWS região em que você está implantando a solução.

AWS DevOps

Clone o GitHub repositório.

Clone o GitHub automated-ci-pipeline-creationrepositório executando o seguinte comando em uma janela de terminal:

git clone https://github.com/aws-samples/automated-ci-pipeline-creation.git

Para obter mais informações, consulte Clonar um repositório na GitHub documentação.

AWS DevOps

Faça o upload da pasta Solution Templates do GitHub repositório clonado para seu bucket do Amazon S3.

Copie o conteúdo da pasta Solution-Templates clonada e faça o upload no bucket do Amazon S3 que você criou.

Para obter mais informações, consulte Fazendo upload de objetos na documentação do Amazon S3.

Observação: certifique-se de fazer o upload somente o conteúdo da pasta Solution-Templates. Você pode fazer upload dos arquivos somente no nível raiz do bucket do Amazon S3.

AWS DevOps
TarefaDescriçãoHabilidades necessárias

Crie uma CloudFormation pilha para implantar a solução usando o arquivo template.yml no repositório clonado. GitHub

  1. Faça login no AWS Management Console e, em seguida, abra o AWS CloudFormation console.

  2. Selecione Criar pilha. Uma lista suspensa aparece.

  3. Na lista suspensa, selecione Com novos recursos (padrão). A página Criar pilha é aberta.

  4. Na seção Especificar modelo escolha a caixa de seleção junto ao Fazer upload de um arquivo de modelo.

  5. Selecione Escolher arquivo. Em seguida, navegue até a pasta raiz do GitHub repositório clonado e selecione o arquivo template.yml. Em seguida, selecione Open (Abrir).

  6. Escolha Próximo. A página Especificar detalhes da pilha é exibida.

  7. Na seção Parâmetros, especifique os parâmetros a seguir:

    • Para o S3 TemplateBucketName, insira o nome do bucket do Amazon S3 que você criou anteriormente, que contém o código-fonte e as referências dessa solução. Verifique se o parâmetro do nome do bucket está em letras minúsculas.

    • Para D ynamoDBTable, insira um nome para a tabela do DynamoDB que CloudFormation a pilha cria.

    • Para StateMachineName, insira um nome para a máquina de estado Step Functions que a CloudFormation pilha cria.

  8. Escolha Próximo. A página Configurar opções adicionais se abre.

  9. Na página Configurar opções de pilha, selecione Próximo. Não altere nenhum dos valores padrão. A página Revisar se abre.

  10. Revise as configurações de criação da pilha. Em seguida, escolha Criar pilha para iniciar sua pilha.

Observação: enquanto sua pilha está sendo criada, ela é listada na página Pilhas com o status _IN_. CREATE PROGRESS Certifique-se de esperar que o status da pilha mude para CREATE_ COMPLETE antes de concluir as etapas restantes desse padrão.

AWSadministrador, AWS DevOps
TarefaDescriçãoHabilidades necessárias

Selecione a função que você criou.

  1. Faça login no AWS Management Console e abra o console Step Functions.

  2. Selecione a função que você criou.

  3. Selecione Iniciar execução. Em seguida, insira seus valores de entrada para o fluxo de trabalho no JSON formato (veja os exemplos de entradas a seguir).

  4. Selecione Iniciar execução.

JSONformatação

{ "details": { "tech_stack": "Name of the Tech Stack (python/java)", "project_name": "Name of the Project that you want to create with", "pre_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "post_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "reports": "Choose the step if it required in the buildspec.yml file i.e., yes/no", } }

Exemplo JSON de entrada Java

{ "details": { "tech_stack": "java", "project_name": "pipeline-java-pjt", "pre_build": "yes", "build": "yes", "post_build": "yes", "reports": "yes" } }

Exemplo de entrada em Python JSON

{ "details": { "tech_stack": "python", "project_name": "pipeline-python-pjt", "pre_build": "yes", "build": "yes", "post_build": "yes", "reports": "yes" } }
AWSadministrador, AWS DevOps

Confirme se o CodeCommit repositório do pipeline de CI foi criado.

  1. Faça login no AWS Management Console e, em seguida, abra o CodeCommit console.

  2. Na página Repositórios, verifique se o nome do CodeCommit repositório que você criou aparece na lista de repositórios. O nome do repositório é anexado com o seguinte: -Repo pipeline-java-pjt

  3. Abra o CodeCommit repositório e valide se o código-fonte de amostra junto com os arquivos buildspec.yml foram enviados para a ramificação principal.

AWS DevOps

Verifique os recursos CodeBuild do projeto.

  1. Faça login no AWS Management Console e, em seguida, abra o CodeBuild console.

  2. Na página Criar projetos, verifique se o nome do CodeBuild projeto que você criou aparece na lista de projetos. O nome do projeto é anexado com o seguinte: pipeline-java-pjt -Build

  3. Selecione o nome do seu CodeBuild projeto para abri-lo. Em seguida, revise e valide as seguintes configurações:

    • Configuração de projeto

    • Origem

    • Ambiente

    • BuildSpec

    • Configuração do lote

    • Artefatos

AWS DevOps

Valide os CodePipeline estágios.

  1. Faça login no AWS Management Console e, em seguida, abra o CodePipeline console.

  2. Na página Pipelines, verifique se o nome do pipeline que você criou aparece na lista de pipelines. O nome do pipeline é anexado com o seguinte: pipeline-java-pjt -Pipeline

  3. Selecione o nome do seu pipeline para abri-lo. Em seguida, revise e valide cada estágio do pipeline, incluindo Confirmar e Implantar.

AWS DevOps

Confirme se o pipeline de CI foi executado com êxito.

  1. No CodePipeline console, na página Pipelines, selecione o nome do seu funil para ver o status do funil.

  2. Verifique se cada estágio do pipeline tem um status de Sucesso.

AWS DevOps
TarefaDescriçãoHabilidades necessárias

Exclua a pilha de recursos. CloudFormation

Exclua a pilha de recursos do pipeline de CI. CloudFormation

Para obter mais informações, consulte Excluindo uma pilha no AWS CloudFormation console na CloudFormation documentação.

Observação: certifique-se de excluir a pilha chamada <project_name>-stack.

AWS DevOps

Exclua as dependências do pipeline de CI no Amazon S3 e. CloudFormation

  1. Esvazie o bucket do Amazon S3 chamado. DeploymentArtifactBucket Para obter mais informações, consulte Esvaziar o bucket na documentação do Amazon S3.

  2. Exclua a pilha de dependências do pipeline de CI. CloudFormation Para obter mais informações, consulte Excluindo uma pilha no AWS CloudFormation console na CloudFormation documentação.

Nota: Certifique-se de excluir a pilha chamada pipeline-creation-dependencies-stack.

AWS DevOps

Consulte Excluir o bucket do modelo do Amazon S3.

Exclua o bucket do Amazon S3 que você criou na seção Configurar os pré-requisitos deste padrão, que armazena os modelos para esta solução.

Para obter mais informações, consulte Excluir o bucket na documentação do Amazon S3.

AWS DevOps

Recursos relacionados