É possível usar o AWS CodeBuild para executar compilações simultâneas e coordenadas de um projeto com compilações em lote.
Perfil de segurança
As compilações em lote introduzem um novo perfil de segurança na configuração em lote. Esse novo perfil é necessário, pois o CodeBuild deve ser capaz de chamar as ações StartBuild
, StopBuild
e RetryBuild
em seu nome para executar compilações como parte de um lote. Os clientes devem usar um novo perfil, e não o mesmo perfil que usam na compilação, por dois motivos:
-
Fornecer ao perfil de compilação as permissões
StartBuild
,StopBuild
eRetryBuild
que permitem a uma única compilação iniciar mais compilações por meio do buildspec. -
As compilações em lote do CodeBuild fornecem restrições que restringem o número de compilações e tipos de computação que podem ser usados para as compilações no lote. Se o perfil de compilação tiver essas permissões, será possível que as próprias compilações ignorem essas restrições.
Tipos de compilação em lote
O CodeBuild é compatível com os seguintes tipos de compilação em lote:
Tipos de compilação em lote
Grafo de compilação
Um grafo de compilação define um conjunto de tarefas que dependem de outras tarefas no lote.
O exemplo a seguir define um grafo de compilação que cria uma cadeia de dependências.
batch:
fast-fail: false
build-graph:
- identifier: build1
env:
variables:
BUILD_ID: build1
ignore-failure: false
- identifier: build2
buildspec: build2.yml
env:
variables:
BUILD_ID: build2
depend-on:
- build1
- identifier: build3
env:
variables:
BUILD_ID: build3
depend-on:
- build2
Neste exemplo:
-
A
build1
é executada primeiro porque não tem dependências. -
A
build2
tem uma dependência embuild1
, então abuild2
é executada após a conclusão dabuild1
. -
A
build3
tem uma dependência embuild2
, então abuild3
é executada após a conclusão dabuild2
.
Para obter mais informações sobre a sintaxe buildspec do grafo de compilação, consulte batch/build-graph.
Lista de compilações
Uma lista de compilações define várias tarefas que são executadas paralelamente.
O exemplo a seguir define uma lista de compilações. As compilações build1
e build2
serão executadas em paralelo.
batch:
fast-fail: false
build-list:
- identifier: build1
env:
variables:
BUILD_ID: build1
ignore-failure: false
- identifier: build2
buildspec: build2.yml
env:
variables:
BUILD_ID: build2
ignore-failure: true
Para obter mais informações sobre a sintaxe buildspec da lista de compilações, consulte batch/build-list.
Matriz de compilações
Uma matriz de compilação define tarefas com configurações diferentes que são executadas paralelamente. O CodeBuild cria uma compilação separada para cada combinação de configuração possível.
O exemplo a seguir mostra uma matriz de compilações com dois arquivos buildspec e três valores para uma variável de ambiente.
batch:
build-matrix:
static:
ignore-failure: false
dynamic:
buildspec:
- matrix1.yml
- matrix2.yml
env:
variables:
MY_VAR:
- VALUE1
- VALUE2
- VALUE3
Neste exemplo, o CodeBuild cria seis compilações:
-
matrix1.yml
com$MY_VAR=VALUE1
-
matrix1.yml
com$MY_VAR=VALUE2
-
matrix1.yml
com$MY_VAR=VALUE3
-
matrix2.yml
com$MY_VAR=VALUE1
-
matrix2.yml
com$MY_VAR=VALUE2
-
matrix2.yml
com$MY_VAR=VALUE3
Cada compilação terá as seguintes configurações:
-
ignore-failure
definido comofalse
-
env/type
definido comoLINUX_CONTAINER
-
env/image
definido comoaws/codebuild/amazonlinux2-x86_64-standard:4.0
-
env/privileged-mode
definido comotrue
Essas compilações são executadas em paralelo.
Para obter mais informações sobre a sintaxe buildspec da matriz de compilações, consulte batch/build-matrix.
Modo de relatório em lote
Se o provedor de origem do projeto for Bitbucket, GitHub ou GitHub Enterprise, e ele estiver configurado para comunicar os status de compilação ao provedor de origem, será possível selecionar como os status de compilação em lote serão enviados ao provedor de origem. É possível optar por enviar os status como um único relatório de status agregado para o lote ou ter o status de cada compilação no lote informado individualmente.
Para obter mais informações, consulte os tópicos a seguir.
Mais informações
Para obter mais informações, consulte os tópicos a seguir.