Exemplos do AWS CodePipeline do CodeBuild - AWS CodeBuild

Exemplos do AWS CodePipeline do CodeBuild

Esta seção descreve exemplos de integrações entre o CodePipeline e o CodeBuild.

Amostra Descrição

Exemplos de integrações e compilações em lote do CodePipeline/CodeBuild

Estes exemplos demonstram como usar o AWS CodePipeline para criar um projeto de compilação que use compilações em lote.

Exemplo de integração do CodePipeline/CodeBuild com várias fontes de entrada e artefatos de saída

Este exemplo demonstra como usar o AWS CodePipeline para criar um projeto de compilação que usa várias origens de entrada para criar vários artefatos de saída.

Exemplos de integrações e compilações em lote do CodePipeline/CodeBuild

O AWS CodeBuild é compatível com compilações em lote. Os exemplos a seguir demonstram como usar o AWS CodePipeline para criar um projeto de compilação que use compilações em lote.

Você pode usar um arquivo em formato JSON que define a estrutura de seu pipeline e, depois, usá-lo com a AWS CLI para criar o pipeline. Para obter mais informações, consulte AWS CodePipeline Pipeline structure reference no Guia do usuário do AWS CodePipeline.

Compilação em lote com artefatos individuais

Use o arquivo JSON a seguir como exemplo de uma estrutura de pipeline que cria uma compilação em lote com artefatos separados. Para habilitar compilações em lote no CodePipeline, defina o parâmetro BatchEnabled do objeto configuration como true.

{ "pipeline": { "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source1", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source1" } ], "configuration": { "S3Bucket": "<my-input-bucket-name>", "S3ObjectKey": "my-source-code-file-name.zip" }, "runOrder": 1 }, { "inputArtifacts": [], "name": "Source2", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source2" } ], "configuration": { "S3Bucket": "<my-other-input-bucket-name>", "S3ObjectKey": "my-other-source-code-file-name.zip" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "source1" }, { "name": "source2" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "CodeBuild" }, "outputArtifacts": [ { "name": "build1" }, { "name": "build1_artifact1" }, { "name": "build1_artifact2" }, { "name": "build2_artifact1" }, { "name": "build2_artifact2" } ], "configuration": { "ProjectName": "my-build-project-name", "PrimarySource": "source1", "BatchEnabled": "true" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "<AWS-CodePipeline-internal-bucket-name>" }, "name": "my-pipeline-name", "version": 1 } }

Veja um exemplo de arquivo buildspec do CodeBuild que funcionará com essa configuração de pipeline.

version: 0.2 batch: build-list: - identifier: build1 env: compute-type: BUILD_GENERAL1_SMALL - identifier: build2 env: compute-type: BUILD_GENERAL1_MEDIUM phases: build: commands: - echo 'file' > output_file artifacts: files: - output_file secondary-artifacts: artifact1: files: - output_file artifact2: files: - output_file

Os nomes dos artefatos de saída especificados no arquivo JSON do pipeline devem coincidir com o identificador das compilações e dos artefatos definidos no arquivo buildspec. A sintaxe é buildIdentifier para os artefatos primários e buildIdentifier_artifactIdentifier para os artefatos secundários.

Por exemplo, para o nome do artefato de saída build1, o CodeBuild fará upload do artefato de build1 para o local de build1. Para o nome de saída build1_artifact1, o CodeBuild fará upload do artefato secundário artifact1 de build1 para o local de build1_artifact1, etc. Se somente um local de saída for especificado, o nome deverá ser somente buildIdentifier.

Depois que você criar o arquivo JSON, poderá criar o pipeline. Use a AWS CLI para executar o comando create-pipeline e transmitir o arquivo para o parâmetro --cli-input-json. Para obter mais informações, consulte Create a pipeline (CLI) no Guia do usuário do AWS CodePipeline.

Compilação em lote com artefatos combinados

Use o arquivo JSON a seguir como exemplo de uma estrutura de pipeline que cria uma compilação em lote com artefatos combinados. Para habilitar compilações em lote no CodePipeline, defina o parâmetro BatchEnabled do objeto configuration como true. Para combinar os artefatos de compilação no mesmo local, defina o parâmetro CombineArtifacts do objeto configuration como true.

{ "pipeline": { "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source1", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source1" } ], "configuration": { "S3Bucket": "<my-input-bucket-name>", "S3ObjectKey": "my-source-code-file-name.zip" }, "runOrder": 1 }, { "inputArtifacts": [], "name": "Source2", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source2" } ], "configuration": { "S3Bucket": "<my-other-input-bucket-name>", "S3ObjectKey": "my-other-source-code-file-name.zip" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "source1" }, { "name": "source2" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "CodeBuild" }, "outputArtifacts": [ { "name": "output1 " } ], "configuration": { "ProjectName": "my-build-project-name", "PrimarySource": "source1", "BatchEnabled": "true", "CombineArtifacts": "true" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "<AWS-CodePipeline-internal-bucket-name>" }, "name": "my-pipeline-name", "version": 1 } }

Veja um exemplo de arquivo buildspec do CodeBuild que funcionará com essa configuração de pipeline.

version: 0.2 batch: build-list: - identifier: build1 env: compute-type: BUILD_GENERAL1_SMALL - identifier: build2 env: compute-type: BUILD_GENERAL1_MEDIUM phases: build: commands: - echo 'file' > output_file artifacts: files: - output_file

Se os artefatos combinados estiverem habilitados para a compilação em lote, haverá somente uma saída permitida. O CodeBuild combinará os artefatos primários de todas as compilações em um único arquivo ZIP.

Depois que você criar o arquivo JSON, poderá criar o pipeline. Use a AWS CLI para executar o comando create-pipeline e transmitir o arquivo para o parâmetro --cli-input-json. Para obter mais informações, consulte Criar um pipeline (CLI) no Guia do usuário do AWS CodePipeline.

Exemplo de integração do CodePipeline/CodeBuild com várias fontes de entrada e artefatos de saída

Um projeto do AWS CodeBuild pode levar mais de uma origem de entrada. Ele também pode criar mais de um artefato de saída. Este exemplo demonstra como usar o AWS CodePipeline para criar um projeto de compilação que usa várias origens de entrada para criar vários artefatos de saída. Para obter mais informações, consulte Várias fontes de entrada e exemplos de artefatos de saída.

Você pode usar um arquivo em formato JSON que define a estrutura de seu pipeline e, depois, usá-lo com a AWS CLI para criar o pipeline. Use o seguinte arquivo JSON como um exemplo de estrutura de pipeline que cria uma compilação com mais de uma origem de entrada e mais de um artefato de saída. Mais adiante neste exemplo, você verá como este arquivo especifica as várias entradas e saídas. Para obter mais informações, consulte CodePipeline pipeline structure reference no Guia do usuário do AWS CodePipeline.

{ "pipeline": { "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source1", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source1" } ], "configuration": { "S3Bucket": "my-input-bucket-name", "S3ObjectKey": "my-source-code-file-name.zip" }, "runOrder": 1 }, { "inputArtifacts": [], "name": "Source2", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source2" } ], "configuration": { "S3Bucket": "my-other-input-bucket-name", "S3ObjectKey": "my-other-source-code-file-name.zip" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "source1" }, { "name": "source2" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "AWS CodeBuild" }, "outputArtifacts": [ { "name": "artifact1" }, { "name": "artifact2" } ], "configuration": { "ProjectName": "my-build-project-name", "PrimarySource": "source1" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "AWS-CodePipeline-internal-bucket-name" }, "name": "my-pipeline-name", "version": 1 } }

Neste arquivo JSON:

  • Uma das suas origens de entrada deve ser designada como PrimarySource. Essa origem é o diretório em que o CodeBuild procura e executa o arquivo buildspec. A palavra-chave PrimarySource é usada para especificar a origem principal na seção configuration do estágio CodeBuild no arquivo JSON.

  • Cada origem de entrada é instalada em seu próprio diretório. Esse diretório é armazenado na variável de ambiente interna $CODEBUILD_SRC_DIR para a origem principal e $CODEBUILD_SRC_DIR_yourInputArtifactName para todas as outras origens. Para o pipeline neste exemplo, os dois diretórios da origem de entrada são $CODEBUILD_SRC_DIR e $CODEBUILD_SRC_DIR_source2. Para obter mais informações, consulte Variáveis de ambiente em ambientes de compilação.

  • Os nomes dos artefatos de saída especificados no arquivo JSON do pipeline devem coincidir com os nomes dos artefatos secundários definidos no arquivo buildspec. Esse pipeline usa o arquivo buildspec a seguir: Para obter mais informações, consulte Sintaxe de buildspec.

    version: 0.2 phases: build: commands: - touch source1_file - cd $CODEBUILD_SRC_DIR_source2 - touch source2_file artifacts: files: - '**/*' secondary-artifacts: artifact1: base-directory: $CODEBUILD_SRC_DIR files: - source1_file artifact2: base-directory: $CODEBUILD_SRC_DIR_source2 files: - source2_file

Depois que você criar o arquivo JSON, poderá criar o pipeline. Use a AWS CLI para executar o comando create-pipeline e transmitir o arquivo para o parâmetro --cli-input-json. Para obter mais informações, consulte Criar um pipeline (CLI) no Guia do usuário do AWS CodePipeline.