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-chavePrimarySource
é usada para especificar a origem principal na seçãoconfiguration
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.