É possível usar o console do AWS CodeBuild, a AWS CLI ou os AWS SDKs para criar um projeto de compilação.
Tópicos
Pré-requisitos
Antes de criar um projeto de compilação, responda às perguntas em Planejar uma compilação.
Criar um projeto de compilação (console)
Abra o console do AWS CodeBuild em https://console.aws.amazon.com/codesuite/codebuild/home
Se uma página de informações do CodeBuild for exibida, selecione Criar projeto de compilação. Caso contrário, no painel de navegação, expanda Compilar, escolha Projetos de compilação e, depois, Criar projeto de compilação.
Selecione Criar projeto de compilação.
Preencha as seções a seguir. Depois de concluir, escolha Criar projeto de compilação na parte inferior da página.
Configuração de projetos
- Nome do projeto
-
Insira um nome para esse projeto de compilação. Os nomes de projeto de compilação devem ser únicos em cada conta da AWS.
- Descrição
-
Insira uma descrição opcional do projeto de compilação para ajudar outros usuários a entender para que esse projeto é usado.
- Emblema da compilação
-
Selecione Habilitar emblema da compilação para que o status de compilação do projeto fique visível e possa ser incorporado. Para obter mais informações, consulte Exemplo de emblemas de compilação.
nota
O emblema de compilação não se aplicará se o provedor de origem for Amazon S3.
- Habilitar limite de compilações simultâneas
-
(Opcional) Se você quiser limitar o número de compilações simultâneas para esse projeto, execute as seguintes etapas:
-
Selecione Restringir número de compilações simultâneas que este projeto pode iniciar.
-
Em Limite de compilações simultâneas, insira o número máximo de compilações simultâneas permitidas para esse projeto. Esse limite não pode ser maior que o limite de compilações simultâneas definido para a conta. Se você tentar inserir um número maior que o limite da conta, uma mensagem de erro será exibida.
Novas compilações só são iniciadas se o número atual de compilações for menor ou igual a esse limite. Se a contagem de compilações atual atender a esse limite, novas compilações serão limitadas e não serão executadas.
-
- Informações adicionais
-
(Opcional) Em Tags, insira o nome e o valor das tags que os serviços da AWS com suporte deverão usar. Use Adicionar linha para adicionar uma tag. É possível adicionar até 50 tags.
Origem
- Provedor de origem
-
Escolha o tipo de provedor do código-fonte. Use as seguintes listas para fazer seleções adequadas ao provedor de origem:
nota
O CodeBuild não é compatível com o Bitbucket Server.
- Bucket
-
Escolha o nome do bucket de entrada que contém o código-fonte.
- Chave de objeto do S3 ou pasta do S3
-
Insira o nome do arquivo ZIP ou o caminho na pasta que contém o código-fonte. Insira uma barra (/) para fazer download de tudo no bucket do S3.
- Versão de origem
-
Insira o ID da versão do objeto que representa a compilação do arquivo de entrada. Para obter mais informações, consulte Exemplo de versão de fonte com o AWS CodeBuild.
Ambiente
- Modelo de provisionamento
-
Execute um destes procedimentos:
-
Para usar frotas sob demanda gerenciadas pelo AWS CodeBuild, escolha Sob demanda. Com as frotas sob demanda, o CodeBuild fornece computação para suas compilações. As máquinas são destruídas quando a compilação termina. As frotas sob demanda são totalmente gerenciadas e incluem recursos de escalabilidade automática para lidar com picos de demanda.
-
Para usar frotas de capacidade reservada gerenciadas pelo AWS CodeBuild, escolha Capacidade reservada e selecione o Nome da frota. Com frotas de capacidade reservada, você configura um conjunto de instâncias dedicadas para seu ambiente de compilação. Essas máquinas permanecem ociosas, prontas para processar compilações ou testes imediatamente e reduzem a duração da compilação. Com frotas de capacidade reservada, suas máquinas estão sempre funcionando e continuarão a incorrer em custos enquanto forem provisionadas.
Para obter mais informações, consulte Executar compilações em frotas de capacidade reservada.
-
- Imagem do ambiente
-
Execute um destes procedimentos:
-
Para usar uma imagem do Docker gerenciada pelo AWS CodeBuild, selecione Imagem gerenciada e faça as escolhas em Sistema operacional, Runtime(s), Imagem e Versão da imagem. Faça uma seleção em Tipo de ambiente se estiver disponível.
-
Para usar outra imagem do Docker, selecione Imagem personalizada. Em Tipo de ambiente, selecione ARM, Linux, Linux GPU ou Windows. Se você selecionar Outro registro, em URL de registro externo, insira o nome e a tag da imagem do Docker no Docker Hub usando o formato
. Se você escolher Amazon ECR, use Repositório do Amazon ECR e Imagem do Amazon ECR para selecionar a imagem do Docker na conta da AWS.docker repository
/docker image name
-
Para usar uma imagem privada do Docker, selecione Imagem personalizada. Em Tipo de ambiente, selecione ARM, Linux, Linux GPU ou Windows. Em Registro da imagem, selecione Outro registro e insira o ARN das credenciais da imagem privada do Docker. As credenciais devem ser criadas pelo Secrets Manager. Para obter mais informações, consulte O que é o AWS Secrets Manager? no Guia do usuário do AWS Secrets Manager.
nota
O CodeBuild substitui o
ENTRYPOINT
para as imagens personalizadas do Docker. -
- Computação
-
Execute um destes procedimentos:
-
Para usar a computação do EC2, escolha EC2. A computação do EC2 oferece flexibilidade otimizada durante execuções de ação.
-
Para usar a computação Lambda, escolha Lambda. A computação Lambda oferece velocidades de inicialização otimizadas para as compilações. O Lambda oferece suporte a compilações mais rápidas devido à menor latência de inicialização. O Lambda também é escalado automaticamente, portanto as compilações não aguardam na fila para serem executadas. Para obter mais informações, consulte Execute compilações na computação do AWS Lambda.
-
- Perfil de serviço
Execute um destes procedimentos:
-
Se você não tiver um perfil de serviço do CodeBuild, selecione Novo perfil de serviço. No campo Nome da função, digite o nome da nova função.
-
Se você tiver um perfil de serviço do CodeBuild, selecione Perfil de serviço existente. Em ARN do perfil, escolha o perfil de serviço.
nota
Ao usar o console para criar um projeto de compilação, é possível criar um perfil de serviço do CodeBuild ao mesmo tempo. Por padrão, a função funciona somente com esse projeto de compilação. Se você usar o console para associar esse perfil de serviço a outro projeto de compilação, a função será atualizada para funcionar com os outros projetos de compilação. Um perfil de serviço pode funcionar com até 10 projetos de compilação.
-
- Configuração adicional
-
- Limite de repetição automática
-
Especifique o número de repetições automáticas adicionais após a falha de uma compilação. Por exemplo, se o limite de repetição automática estiver definido como 2, o CodeBuild chamará a API
RetryBuild
para repetir automaticamente a compilação por até 2 vezes adicionais. - Tempo limite
-
Especifique um valor entre 5 minutos e 36 horas, tempo depois do qual o CodeBuild para a compilação se ela não estiver concluída. Se horas e minutos forem deixados em branco, o valor padrão de 60 minutos será usado.
- Privilegiado
-
(Opcional) Selecione Ativar este sinalizador se quiser criar imagens do Docker ou desejar que suas compilações obtenham privilégios elevados somente se planeja usar esse projeto de compilação para criar imagens do Docker. Do contrário, todas as compilações associadas que tentarem interagir com o daemon do Docker falharão. Você também deve iniciar o daemon do Docker, de maneira que as compilações possam interagir com ele. Uma maneira de fazer isso é inicializar o daemon do Docker na fase
install
de especificação da compilação executando os comandos de compilação a seguir. Não execute esses comandos caso você escolha uma imagem de ambiente da compilação fornecida pelo CodeBuild com suporte do Docker.nota
Por padrão, o daemon do Docker está habilitado para compilações não VPC. Se você quiser usar contêineres do Docker para compilações da VPC, consulte Privilégio de tempo de execução e funcionalidades do Linux
no site do Docker Docs e ative o modo privilegiado. Além disso, o Windows não é compatível com o modo privilegiado. - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
- VPC
Se você desejar que o CodeBuild funcione com a VPC:
-
Em VPC, escolha o ID da VPC que o CodeBuild usa.
-
Em Sub-redes da VPC, selecione as sub-redes que incluem recursos usados pelo CodeBuild.
-
Em Grupos de segurança da VPC, selecione os grupos de segurança que o CodeBuild usa para permitir acesso a recursos nas VPCs.
Para obter mais informações, consulte Usar o AWS CodeBuild com o Amazon Virtual Private Cloud.
-
- Computação
-
Selecione uma das opções disponíveis.
- Variáveis de ambiente
-
Insira o nome e o valor e, depois, selecione o tipo de cada variável de ambiente a ser usada pelas compilações.
nota
O CodeBuild define a variável de ambiente para a região da AWS automaticamente. Defina as seguintes variáveis de ambiente se elas não tiverem sido adicionadas ao buildspec.yml:
-
AWS_ACCOUNT_ID
-
IMAGE_REPO_NAME
-
IMAGE_TAG
Os usuários do console e da AWS CLI podem visualizar as variáveis de ambiente. Caso você não tenha problema em relação à visibilidade da variável de ambiente, defina os campos Nome e Valor e Tipo como Texto simples.
Recomendamos armazenar uma variável de ambiente com um valor confidencial, como um ID de chave de acesso da AWS, uma chave de acesso secreta da AWS ou uma senha como um parâmetro no Amazon EC2 Systems Manager Parameter Store ou AWS Secrets Manager.
Se você usar o Amazon EC2 Systems Manager Parameter Store, em Tipo, escolha Parâmetro. Em Nome, insira um identificador para o CodeBuild para referência. Em Valor, insira o nome do parâmetro conforme armazenado no Amazon EC2 Systems Manager Parameter Store. Usando um parâmetro chamado
/CodeBuild/dockerLoginPassword
como exemplo, em Tipo, escolha Parâmetro. Em Nome, insiraLOGIN_PASSWORD
. Em Valor, insira/CodeBuild/dockerLoginPassword
.Importante
Se você usa o Amazon EC2 Systems Manager Parameter Store, recomendamos armazenar os parâmetros com nomes de parâmetro que comecem com
/CodeBuild/
(por exemplo,/CodeBuild/dockerLoginPassword
). É possível usar o console do CodeBuild para criar um parâmetro no Amazon EC2 Systems Manager. Selecione Criar parâmetro e siga as instruções na caixa de diálogo. (Nessa caixa de diálogo, em Chave do KMS, é possível especificar o ARN de uma chave do AWS KMS na conta. O Amazon EC2 Systems Manager usa essa chave para criptografar o valor do parâmetro durante o armazenamento e descriptografá-lo durante a recuperação.) Se você usar o console do CodeBuild para criar um parâmetro, o console começará o nome do parâmetro com/CodeBuild/
, pois ele está sendo armazenado. Para obter mais informações, consulte Systems Manager Parameter Store e Systems Manager Parameter Store Console Walkthrough no Guia do usuário do Amazon EC2 Systems Manager.Se o projeto de compilação se referir a parâmetros armazenados no Amazon EC2 Systems Manager Parameter Store, o perfil de serviço do projeto de compilação deverá permitir a ação
ssm:GetParameters
. Se você selecionar Novo perfil de serviço anteriormente, o CodeBuild incluirá essa ação no perfil de serviço padrão do projeto de compilação. No entanto, se você tiver selecionado Perfil de serviço existente, deverá incluir essa ação no perfil de serviço separadamente.Se o projeto de compilação fizer referência a parâmetros armazenados no Amazon EC2 Systems Manager Parameter Store com nomes de parâmetro que não comecem com
/CodeBuild/
e você selecionar Novo perfil de serviço, será necessário atualizar esse perfil de serviço para conceder acesso a nomes de parâmetro que não comecem com/CodeBuild/
. Isso porque esse perfil de serviço permite acesso apenas a nomes de parâmetro que comecem com/CodeBuild/
.Se você selecionar Novo perfil de serviço, o perfil de serviço incluirá permissão para descriptografar todos os parâmetros no namespace
/CodeBuild/
no Amazon EC2 Systems Manager Parameter Store.As variáveis de ambiente definidas por você substituem variáveis de ambiente existentes. Por exemplo, se a imagem do Docker já contiver uma variável de ambiente chamada
MY_VAR
com um valor demy_value
e você definir uma variável de ambiente chamadaMY_VAR
com um valor deother_value
,my_value
será substituído porother_value
. Da mesma maneira, se a imagem do Docker já contiver uma variável de ambiente chamadaPATH
com um valor de/usr/local/sbin:/usr/local/bin
e você definir uma variável de ambiente chamadaPATH
com um valor de$PATH:/usr/share/ant/bin
,/usr/local/sbin:/usr/local/bin
será substituído pelo valor literal$PATH:/usr/share/ant/bin
.Não defina nenhuma variável de ambiente com um nome que comece com
CODEBUILD_
. Este prefixo está reservado para uso interno.Se uma variável de ambiente com o mesmo nome é definida em vários locais, o valor será determinado como se segue:
-
O valor na chamada de operação de início de compilação tem a maior prioridade.
-
O valor na definição de projeto de compilação tem a precedência seguinte.
-
O valor na declaração de buildspec tem a menor prioridade.
Se você usar o Secrets Manager, em Tipo, escolha Secrets Manager. Em Nome, insira um identificador para o CodeBuild para referência. Em Valor, insira um
reference-key
usando o padrão
. Para obter mais informações, consulte Secrets Manager reference-key in the buildspec file.secret-id
:json-key
:version-stage
:version-id
Importante
Se você usa o Secrets Manager, recomendamos armazenar segredos com nomes que comecem com
/CodeBuild/
(por exemplo,/CodeBuild/dockerLoginPassword
). Para obter mais informações, consulte O que é o AWS Secrets Manager? no Guia do usuário do AWS Secrets Manager.Se o projeto de compilação se referir a segredos armazenados no Secrets Manager, o perfil de serviço do projeto de compilação deverá permitir a ação
secretsmanager:GetSecretValue
. Se você selecionar Novo perfil de serviço anteriormente, o CodeBuild incluirá essa ação no perfil de serviço padrão do projeto de compilação. No entanto, se você tiver selecionado Perfil de serviço existente, deverá incluir essa ação no perfil de serviço separadamente.Se o projeto de compilação fizer referência a segredos armazenados no Secrets Manager com nomes que não comecem com
/CodeBuild/
e você selecionar Novo perfil de serviço, será necessário atualizar esse perfil de serviço para conceder acesso a nomes de segredo que não comecem com/CodeBuild/
. O motivo é que o perfil de serviço permite acesso apenas a nomes de segredo que comecem com/CodeBuild/
.Se você selecionar Novo perfil de serviço, o perfil de serviço incluirá permissão para descriptografar todos os segredos no namespace
/CodeBuild/
no Secrets Manager. -
Buildspec
- Especificações de compilação
-
Execute um destes procedimentos:
-
Se o seu código-fonte inclui um arquivo buildspec, escolha Usar um arquivo buildspec. Por padrão, o CodeBuild procura um arquivo chamado
buildspec.yml
no diretório raiz do código-fonte. Se o arquivo buildspec usar um nome ou um local diferente, insira o caminho a partir da raiz de origem em Nome do buildspec (por exemplo,buildspec-two.yml
ouconfiguration/buildspec.yml
. Se o arquivo buildspec estiver em um bucket do S3, ele deverá estar na mesma região da AWS do projeto de compilação. Especifique o arquivo buildspec usando o ARN (por exemplo,arn:aws:s3:::
).<my-codebuild-sample2>
/buildspec.yml -
Se o código-fonte não incluir um arquivo buildspec ou se você quiser executar comandos de compilação diferentes dos especificados para a fase
build
no arquivobuildspec.yml
, no diretório raiz do código-fonte, escolha Inserir comandos de compilação. Para Comandos de compilação, insira os comandos que você quer executar na fasebuild
. Para vários comandos, separe-os com&&
(por exemplo,mvn test && mvn package
). Para executar comandos em outras fases, ou se você tiver uma lista longa de comandos para a fasebuild
, adicione um arquivobuildspec.yml
ao diretório raiz do código-fonte, adicione os comandos ao arquivo e escolha Usar o buildspec.yml no diretório raiz do código-fonte.
Para obter mais informações, consulte Referência de buildspec.
-
Configuração em lote
É possível executar um grupo de compilações como uma única operação. Para obter mais informações, consulte Executar compilações em lotes.
- Definir a configuração em lote
-
Selecione para permitir compilações em lote neste projeto.
- Perfil de serviço em lote
-
Fornece o perfil de serviço para compilações em lote.
Escolha uma das seguintes opções:
-
Se você não tiver um perfil de serviço em lote, selecione Novo perfil de serviço. Em Perfil de serviço, insira um nome para o novo perfil.
-
Se você tiver um perfil de serviço em lote, selecione Perfil de serviço existente. Em Perfil de serviço, selecione o perfil de serviço.
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
eRetryBuild
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.
-
- Tipo(s) de computação permitido(s) para lote
-
Selecione os tipos de computação permitidos para o lote. Selecione todas as opções aplicáveis.
- Máximo de compilações permitidas em lote
-
Insira o número máximo de compilações permitidas no lote. Se um lote exceder esse limite, ele falhará.
- Tempo limite do lote
-
Insira o tempo máximo para a conclusão da compilação em lote.
- Combinar artefatos
-
Selecione Combinar todos os artefatos do lote em um único local para que todos os artefatos do lote sejam combinados em um único local.
- Modo de relatório em lote
-
Selecione o modo de relatório de status de compilação desejado para compilações em lote.
nota
Esse campo só estará disponível quando a origem do projeto for Bitbucket, GitHub ou GitHub Enterprise, e a opção Relatar status de compilação ao provedor de origem no início e no término das compilações estiver selecionada em Origem.
- Compilações agregadas
-
Selecione para que os status de todas as compilações do lote sejam combinados em um único relatório de status.
- Compilações individuais
-
Selecione para que os status de todas as compilações no lote sejam relatados separadamente.
Artefatos
- Tipo
-
Execute um destes procedimentos:
-
Se você não quiser criar artefatos de saída da compilação, escolha Nenhum artefato. É recomendável fazer isso caso esteja executando apenas testes de compilação ou queira enviar uma imagem do Docker a um repositório do Amazon ECR.
-
Para armazenar a saída de compilação em um bucket do S3, escolha Amazon S3 e faça o seguinte:
-
Se você quiser usar o nome do projeto para a pasta ou arquivo ZIP de saída da compilação, deixe Nome em branco. Caso contrário, insira o nome. (Se quiser um arquivo ZIP como saída e quiser que esse arquivo tenha uma extensão de arquivo, não se esqueça de incluir a extensão depois do nome do arquivo.)
-
Selecione Habilitar o controle semântico de versões se quiser que um nome especificado no arquivo buildspec substitua qualquer nome especificado no console. O nome em um arquivo buildspec é calculado no tempo de compilação e usa a linguagem de comandos do Shell. Por exemplo, você pode anexar uma data e hora ao nome do artefato para que ele seja sempre exclusivo. Os nomes de artefato exclusivos impedem que os artefatos sejam substituídos. Para obter mais informações, consulte Sintaxe de buildspec.
-
Para Nome do bucket, selecione o nome do bucket de saída.
-
Se você tiver escolhido Inserir comandos de compilação anteriormente neste procedimento, em Arquivos de saída, insira os locais dos arquivos da compilação que deseja incluir no arquivo ZIP de saída da compilação ou na pasta. Para vários locais, separe-os com uma vírgula (por exemplo,
appspec.yml, target/my-app.jar
). Para obter mais informações, consulte a descrição defiles
em Sintaxe de buildspec. -
Se você não quiser que os artefatos de compilação sejam criptografados, selecione Remover a criptografia dos artefatos.
-
Para cada conjunto secundário de artefatos desejado:
-
Em Identificador do artefato, insira um valor com menos de 128 caracteres e que contenha apenas caracteres alfanuméricos e sublinhados.
-
Escolha Adicionar artefato.
-
Siga as etapas anteriores para configurar seus artefatos secundários.
-
Escolha Salvar artefato.
-
- Configuração adicional
-
- Chave de criptografia
-
(Opcional) Siga um destes procedimentos:
-
Para usar a Chave gerenciada pela AWS para o Amazon S3 na conta para criptografar os artefatos de saída de compilação, deixe Chave de criptografia em branco. Esse é o padrão.
-
Para usar uma chave gerenciada pelo cliente para criptografar os artefatos de saída da compilação, em Chave de criptografia, insira o ARN da chave do KMS. Use o formato
arn:aws:kms:
.region-ID
:account-ID
:key/key-ID
-
- Tipo de cache
Em Tipo de cache, selecione uma das seguintes opções:
-
Se não quiser usar um cache, escolha Nenhum cache.
-
Se você quiser um cache do Amazon S3, selecione Amazon S3 e faça o seguinte:
-
Em Bucket, escolha o nome do bucket do S3 onde o cache está armazenado.
-
(Opcional) Em Prefixo do caminho do cache, insira um prefixo de caminho do Amazon S3. O valor Prefixo do caminho do cache é semelhante ao nome de um diretório. Ele permite que você armazene o cache em um bucket no mesmo diretório.
Importante
Não acrescente uma barra (/) ao final do prefixo do caminho.
-
-
Se você quiser usar um cache local, selecione Local e depois selecione um ou mais modos de cache local.
nota
O modo de cache de camada do Docker está disponível apenas para o Linux. Se optar por esse modo, o projeto deverá ser executado no modo privilegiado.
O uso do cache economiza um tempo de compilação considerável porque as partes reutilizáveis do ambiente de compilação são armazenadas no cache e usadas em diferentes compilações. Para obter informações sobre como especificar um cache no arquivo de especificação de compilação, consulte Sintaxe de buildspec. Para obter mais informações sobre armazenamento em cache, consulte Compilações em cache para melhorar o desempenho.
-
Logs
Selecione os logs que deseja criar. É possível criar o Amazon CloudWatch Logs, os logs do Amazon S3 ou ambos.
- CloudWatch
-
Se você quiser os logs do Amazon CloudWatch Logs:
- Logs do CloudWatch
-
Selecione Logs do CloudWatch.
- Nome do grupo
-
Insira o nome do grupo de logs do Amazon CloudWatch Logs.
- Nome do fluxo
-
Insira o nome do fluxo de logs do Amazon CloudWatch Logs.
- S3
-
Se você quiser que o Amazon S3 registre:
- Logs do S3
-
Selecione Logs do S3.
- Bucket
-
Escolha o nome do bucket do S3 para os logs.
- Prefixo do caminho
-
Insira o prefixo para seus logs.
- Desabilitar a criptografia de logs do S3
-
Selecione se não quiser que os logs do S3 sejam criptografados.
Criar um projeto de compilação (AWS CLI)
Para obter mais informações sobre como usar o AWS CLI com o CodeBuild, consulte Referência da linha de comando.
Para criar um projeto de compilação do CodeBuild usando a AWS CLI, crie uma estrutura de projeto formatada em JSON, preencha a estrutura e chame o comando create-project
para criar o projeto.
Criar o arquivo JSON
Crie um arquivo JSON esqueleto com o comando create-project
, usando a opção --generate-cli-skeleton
:
aws codebuild create-project --generate-cli-skeleton >
<json-file>
Isso cria um arquivo JSON com o caminho e o nome do arquivo especificados por<json-file>
.
Preencher o arquivo JSON
Modifique os dados JSON da maneira a seguir e salve os resultados.
{
"name": "<project-name>
",
"description": "<description>
",
"source": {
"type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE",
"location": "<source-location>
",
"gitCloneDepth": "<git-clone-depth>
",
"buildspec": "<buildspec>
",
"InsecureSsl": "<insecure-ssl>
",
"reportBuildStatus": "<report-build-status>
",
"buildStatusConfig": {
"context": "<context>
",
"targetUrl": "<target-url>
"
},
"gitSubmodulesConfig": {
"fetchSubmodules": "<fetch-submodules>
"
},
"auth": {
"type": "<auth-type>
",
"resource": "<auth-resource>
"
},
"sourceIdentifier": "<source-identifier>
"
},
"secondarySources": [
{
"type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE",
"location": "<source-location>
",
"gitCloneDepth": "<git-clone-depth>
",
"buildspec": "<buildspec>
",
"InsecureSsl": "<insecure-ssl>
",
"reportBuildStatus": "<report-build-status>
",
"auth": {
"type": "<auth-type>
",
"resource": "<auth-resource>
"
},
"sourceIdentifier": "<source-identifier>
"
}
],
"secondarySourceVersions": [
{
"sourceIdentifier": "<secondary-source-identifier>
",
"sourceVersion": "<secondary-source-version>
"
}
],
"sourceVersion": "<source-version>"
,
"artifacts": {
"type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS",
"location": "<artifacts-location>
",
"path": "<artifacts-path>
",
"namespaceType": "<artifacts-namespacetype>
",
"name": "<artifacts-name>
",
"overrideArtifactName": "<override-artifact-name>
",
"packaging": "<artifacts-packaging>
"
},
"secondaryArtifacts": [
{
"type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS",
"location": "<secondary-artifact-location>
",
"path": "<secondary-artifact-path>
",
"namespaceType": "<secondary-artifact-namespaceType>
",
"name": "<secondary-artifact-name>
",
"packaging": "<secondary-artifact-packaging>
",
"artifactIdentifier": "<secondary-artifact-identifier>
"
}
],
"cache": {
"type": "<cache-type>
",
"location": "<cache-location>
",
"mode": [
"<cache-mode>
"
]
},
"environment": {
"type": "LINUX_CONTAINER" | "LINUX_GPU_CONTAINER" | "ARM_CONTAINER" | "WINDOWS_SERVER_2019_CONTAINER" | "WINDOWS_SERVER_2022_CONTAINER",
"image": "<image>
",
"computeType": "BUILD_GENERAL1_SMALL" | "BUILD_GENERAL1_MEDIUM" | "BUILD_GENERAL1_LARGE" | "BUILD_GENERAL1_2XLARGE",
"certificate": "<certificate>
",
"environmentVariables": [
{
"name": "<environmentVariable-name>
",
"value": "<environmentVariable-value>
",
"type": "<environmentVariable-type>
"
}
],
"registryCredential": [
{
"credential": "<credential-arn-or-name>
",
"credentialProvider": "<credential-provider>
"
}
],
"imagePullCredentialsType": "CODEBUILD" | "SERVICE_ROLE",
"privilegedMode": "<privileged-mode>
"
},
"serviceRole": "<service-role>
",
"autoRetryLimit": <auto-retry-limit>
,
"timeoutInMinutes": <timeout>
,
"queuedTimeoutInMinutes": <queued-timeout>
,
"encryptionKey": "<encryption-key>
",
"tags": [
{
"key": "<tag-key>
",
"value": "<tag-value>
"
}
],
"vpcConfig": {
"securityGroupIds": [
"<security-group-id>
"
],
"subnets": [
"<subnet-id>
"
],
"vpcId": "<vpc-id>
"
},
"badgeEnabled": "<badge-enabled>
",
"logsConfig": {
"cloudWatchLogs": {
"status": "<cloudwatch-logs-status>
",
"groupName": "<group-name>
",
"streamName": "<stream-name>
"
},
"s3Logs": {
"status": "<s3-logs-status>
",
"location": "<s3-logs-location>
",
"encryptionDisabled": "<s3-logs-encryption-disabled>
"
}
},
"fileSystemLocations": [
{
"type": "EFS",
"location": "<EFS-DNS-name-1>
:/<directory-path>
",
"mountPoint": "<mount-point>
",
"identifier": "<efs-identifier>
",
"mountOptions": "<efs-mount-options>
"
}
],
"buildBatchConfig": {
"serviceRole": "<batch-service-role>
",
"combineArtifacts": <combine-artifacts>
,
"restrictions": {
"maximumBuildsAllowed": <max-builds>
,
"computeTypesAllowed": [
"<compute-type>
"
]
},
"timeoutInMins": <batch-timeout>
,
"batchReportMode": "REPORT_AGGREGATED_BATCH" | "REPORT_INDIVIDUAL_BUILDS"
},
"concurrentBuildLimit": <concurrent-build-limit>
}
Substitua o seguinte:
name
Obrigatório. O nome deste projeto de build. Esse nome deve ser único em todos os projetos de build em sua conta AWS.
descrição
Opcional. A descrição desse projeto de build.
source
Obrigatório. Um objeto ProjectSource que contém informações sobre as configurações do código-fonte desse projeto de compilação. Depois de adicionar um objeto source
, você poderá adicionar até 12 outras origens com o secondarySources. Essas configurações incluem o seguinte:
- source/type
-
Obrigatório. O tipo de repositório que contém o código-fonte para build. Os valores válidos são:
-
CODECOMMIT
-
CODEPIPELINE
-
GITHUB
-
GITHUB_ENTERPRISE
-
GITLAB
-
GITLAB_SELF_MANAGED
-
BITBUCKET
-
S3
-
NO_SOURCE
Se você usar
NO_SOURCE
, o buildspec não poderá ser um arquivo porque o projeto não terá uma origem. Em vez disso, você deve usar o atributobuildspec
para especificar uma string formatada em YAML para seu buildspec. Para obter mais informações, consulte Criar um projeto de compilação sem uma origem. -
- source/location
-
Obrigatório, a menos que você defina
<source-type>
comoCODEPIPELINE
. O local do código-fonte para o tipo de repositório especificado.-
Para o CodeCommit, o URL do clone do HTTPS para o repositório que contém o código-fonte e o arquivo buildspec (por exemplo,
https://git-codecommit.
).<region-id>
.amazonaws.com/v1/repos/<repo-name>
-
Para o Amazon S3, o nome do bucket de entrada da compilação, seguido pelo caminho e o nome do arquivo ZIP que contém o código-fonte e o buildspec. Por exemplo:
-
Para um arquivo ZIP localizado na raiz do bucket de entrada:
.<bucket-name>
/<object-name>
.zip -
Para um arquivo ZIP localizado em uma subpasta no bucket de entrada:
.<bucket-name>
/<subfoler-path>
/<object-name>
.zip
-
-
Para o GitHub, o URL do clone HTTPS para o repositório que contém o código-fonte e o arquivo buildspec. O URL deve conter github.com. Você deve conectar sua conta da AWS à sua conta do GitHub. Para isso, use o console do CodeBuild para criar um projeto de compilação.
-
Escolha Autorizar aplicativo. (Depois que tiver se conectado à conta do GitHub, você não precisará concluir a criação do projeto de compilação. Você pode sair do console do CodeBuild).
-
-
Para o GitHub Enterprise Server, o URL do clone HTTPS ou HTTP para o repositório que contém o código-fonte e o arquivo buildspec. Também é necessário conectar sua conta da AWS à sua conta do GitHub Enterprise Server. Para isso, use o console do CodeBuild para criar um projeto de compilação.
-
Crie um token de acesso pessoal no GitHub Enterprise Server.
-
Copie este token na área de transferência para usá-lo ao criar o projeto do CodeBuild. Para obter mais informações, consulte Criar um token de acesso pessoal para a linha de comando
no site de Ajuda do GitHub. -
Quando você usa o console para criar o projeto do CodeBuild, em Origem, em Provedor de origem, escolha GitHub Enterprise.
-
Em Personal Access Token, cole o token que foi copiado na área de transferência. Escolha Salvar token. A conta do CodeBuild agora está conectada à conta do GitHub Enterprise Server.
-
-
Para o GitLab e o GitLab autogerenciado, o URL do clone HTTPS para o repositório que contém o código-fonte e o arquivo buildspec. Observe que, se você usa o GitLab, o URL deve conter gitlab.com. Se você usa o GitLab autogerenciado, o URL não precisa conter gitlab.com. Você deve conectar a conta da AWS à conta do GitLab ou do GitLab autogerenciado. Para isso, use o console do CodeBuild para criar um projeto de compilação.
-
No painel de navegação Developer Tools, escolha Configurações, Conexões e Criar conexão. Nesta página, crie uma conexão do GitLab ou do GitLab autogerenciado e escolha Conectar ao GitLab.
-
-
Para o Bitbucket, o URL do clone HTTPS para o repositório que contém o código-fonte e o arquivo buildspec. O URL deve conter bitbucket.org. Você também deve conectar sua conta da AWS à conta do Bitbucket. Para isso, use o console do CodeBuild para criar um projeto de compilação.
-
Quando você usa o console para se conectar (ou se reconectar) ao Bitbucket, na página Confirm access to your account do Bitbucket, escolha Grant access. (Depois que tiver se conectado à conta do Bitbucket, não será necessário concluir a criação do projeto de compilação. Você pode sair do console do CodeBuild).
-
-
Em AWS CodePipeline, não especifique um valor
location
parasource
. O CodePipeline ignora esse valor porque, ao criar um pipeline no CodePipeline, você especifica o local do código-fonte no estágio de origem do pipeline.
-
- source/gitCloneDepth
-
Opcional. A profundidade do histórico a ser obtido por download. O valor mínimo é 0. Se o valor for 0, superior a 25 ou não fornecido, o histórico completo será obtido por download com cada projeto de compilação. Se o tipo de origem é o Amazon S3, esse valor não é compatível.
- source/buildspec
-
Opcional. A definição de especificação do build ou arquivo a ser usado. Se esse valor não for fornecido ou for definido como uma string vazia, o código-fonte deverá conter um arquivo
buildspec.yml
em seu diretório raiz. Se estiver definido, esse valor poderá ser uma definição de buildspec em linha, o caminho para um arquivo buildspec alternativo relativo ao diretório raiz da origem principal ou ao caminho para um bucket do S3. O bucket deve estar na mesma região da AWS que o projeto de compilação. Especifique o arquivo buildspec usando seu ARN (por exemplo,arn:aws:s3:::
). Para obter mais informações, consulte Nome do arquivo buildspec e local de armazenamento.<my-codebuild-sample2>
/buildspec.yml - source/auth
-
Contém informações sobre as configurações de autorização para o CodeBuild acessar o código-fonte a ser compilado.
- source/auth/type
-
Obrigatório. O tipo de autorização a ser usado. Os valores válidos são:
-
OAUTH
-
CODECONNECTIONS
-
SECRETS_MANAGER
-
- source/auth/resource
-
Opcional. O valor do recurso que se aplica ao tipo de autorização especificado. Isso pode ser o ARN do Secrets Manager ou o ARN do CodeConnections.
- source/reportBuildStatus
-
Especifica se é necessário enviar os status inicial e final de uma compilação ao seu provedor de origem. Se você definir esse valor com um provedor de origem que não seja o GitHub, o GitHub Enterprise Server ou o Bitbucket, uma
invalidInputException
será lançada.Para poder relatar o status da compilação ao provedor de origem, o usuário associado ao provedor de origem deve ter acesso de gravação ao repositório. Se o usuário não tiver acesso de gravação, o status de compilação não poderá ser atualizado. Para obter mais informações, consulte Acesso do provedor de origem.
- source/buildStatusConfig
-
Contém informações que definem como o projeto de compilação do CodeBuild relata o status da compilação ao provedor de origem. Essa opção só é usada quando o provedor de origem é
GITHUB
,GITHUB_ENTERPRISE
ouBITBUCKET
.- source/buildStatusConfig/context
-
Para origens do Bitbucket, esse parâmetro é usado para o parâmetro
name
no status de confirmação do Bitbucket. Para origens do GitHub, esse parâmetro é usado para o parâmetrocontext
no status de confirmação do GitHub.Por exemplo, é possível fazer com que o
context
contenha o número da compilação e o gatilho do webhook usando as variáveis de ambiente do CodeBuild:AWS CodeBuild sample-project Build #$CODEBUILD_BUILD_NUMBER - $CODEBUILD_WEBHOOK_TRIGGER
Isso faz com que o contexto apareça assim para a compilação #24 acionada por um evento de solicitação pull de webhook:
AWS CodeBuild sample-project Build #24 - pr/8
- source/buildStatusConfig/targetUrl
-
Para origens do Bitbucket, esse parâmetro é usado para o parâmetro
url
no status de confirmação do Bitbucket. Para origens do GitHub, esse parâmetro é usado para o parâmetrotarget_url
no status de confirmação do GitHub.Por exemplo, é possível definir o
targetUrl
comohttps://aws.amazon.com/codebuild/
e o status de confirmação será vinculado a esse URL.<path to build>
Também é possível incluir variáveis de ambiente do CodeBuild no
targetUrl
para adicionar mais informações ao URL. Por exemplo, para adicionar a região de compilação ao URL, defina otargetUrl
como:"targetUrl": "https://aws.amazon.com/codebuild/
<path to build>
?region=$AWS_REGION"Se a região de construção for
us-east-2
, ela se expandirá para:https://aws.amazon.com/codebuild/
<path to build>
?region=us-east-2
- source/gitSubmodulesConfig
-
Opcional. Informações sobre a configuração dos submódulos do Git. Usado somente com o CodeCommit, o GitHub, o GitHub Enterprise Server e o Bitbucket.
- source/gitSubmodulesConfig/fetchSubmodules
-
Defina
fetchSubmodules
comotrue
se quiser incluir os submódulos do Git em seu repositório. Os submódulos do Git incluídos devem ser configurados como HTTPS.
- source/InsecureSsl
-
Opcional. Usado somente com o GitHub Enterprise Server. Defina esse valor como
true
para ignorar os avisos do TLS ao conectar-se ao repositório do projeto do GitHub Enterprise Server. O valor padrão éfalse
.InsecureSsl
deve ser usado apenas para fins de teste. Ele não deve ser usado em um ambiente de produção. - source/sourceIdentifier
-
Um identificador definido pelo usuário para a origem do projeto. Opcional para a origem principal. Obrigatório para origens secundárias.
secondarySources
Opcional. Uma matriz de objetos ProjectSource que contêm informações sobre as origens secundárias de um projeto de compilação. É possível adicionar até 12 origens secundárias. Os objetos secondarySources
usam as mesmas propriedades usadas pelo objeto source. Em um objeto de origem secundário, o sourceIdentifier
é obrigatório.
secondarySourceVersions
Opcional. Uma matriz de objetos ProjectSourceVersion. Se secondarySourceVersions
for especificado no nível de compilação, ele terá precedência.
sourceVersion
Opcional. A versão da entrada de compilação a ser criada para esse projeto. Se não for especificada, a versão mais recente será usada. Se for especificada, ela deverá ser uma das seguintes:
-
Para o CodeCommit: o ID de confirmação, a ramificação ou a tag do Git a ser usada.
-
Para o GitHub, o ID de confirmação, a solicitação, o nome da ramificação ou o nome da tag que corresponda à versão do código-fonte que você deseja compilar. Caso seja especificado, um ID de solicitação deve usar o formato
pr/pull-request-ID
(por exemplo,pr/25
). Se um nome de ramificação for especificado, o ID de confirmação HEAD da ramificação será usado. Se não estiver especificado, o ID de confirmação HEAD da ramificação padrão será usado. -
Para o GitLab, o ID de confirmação, o ID da solicitação pull, o nome da ramificação, o nome da tag ou uma referência e um ID de confirmação. Para obter mais informações, consulte Exemplo de versão de fonte com o AWS CodeBuild.
-
Para o Bitbucket, o ID de confirmação, o nome da ramificação ou o nome da tag que corresponda à versão do código-fonte que você deseja compilar. Se um nome de ramificação for especificado, o ID de confirmação HEAD da ramificação será usado. Se não estiver especificado, o ID de confirmação HEAD da ramificação padrão será usado.
-
Para o Amazon S3, o ID da versão do objeto que representa o arquivo ZIP de entrada da compilação a ser usado.
Se sourceVersion
for especificado no nível de compilação, essa versão terá precedência sobre esta sourceVersion
(no nível do projeto). Para obter mais informações, consulte Exemplo de versão de fonte com o AWS CodeBuild.
artifacts
Obrigatório. Um objeto ProjectArtifacts que contém informações sobre as configurações do artefato de saída do projeto de compilação. Depois de adicionar um objeto artifacts
, você poderá adicionar até 12 outros artefatos com o secondaryArtifacts. Essas configurações incluem o seguinte:
- artifacts/type
-
Obrigatório. O tipo de artefato de saída de build. Os valores válidos são:
-
CODEPIPELINE
-
NO_ARTIFACTS
-
S3
-
- artifacts/location
-
Usado somente com o tipo de artefato do
S3
. Não é usado para outros tipos de artefatos.O nome do bucket de saída que você criou ou identificou nos pré-requisitos.
- artifacts/path
-
Usado somente com o tipo de artefato do
S3
. Não é usado para outros tipos de artefatos.O caminho do bucket de saída para colocar a pasta ou o arquivo ZIP. Se você não especificar um valor para
path
, o CodeBuild usaránamespaceType
(se especificado) ename
para determinar o caminho e o nome do arquivo ou da pasta ZIP de saída da compilação. Por exemplo, se você especificarMyPath
parapath
,MyArtifact.zip
paraname
, o caminho e o nome serãoMyPath/MyArtifact.zip
. - artifacts/namespaceType
-
Usado somente com o tipo de artefato do
S3
. Não é usado para outros tipos de artefatos.O namespace da pasta ou do arquivo ZIP de saída da compilação. Os valores válidos são
BUILD_ID
eNONE
. UseBUILD_ID
para inserir a ID de build no caminho da pasta ou do arquivo ZIP de saída do build. Caso contrário, useNONE
. Se você não especificar um valor paranamespaceType
, o CodeBuild usarápath
(se especificado) ename
para determinar o caminho e o nome do arquivo ou da pasta ZIP de saída da compilação. Por exemplo, se você especificarMyPath
parapath
,BUILD_ID
paranamespaceType
eMyArtifact.zip
paraname
, o caminho e o nome serãoMyPath/
.build-ID
/MyArtifact.zip - artifacts/name
-
Usado somente com o tipo de artefato do
S3
. Não é usado para outros tipos de artefatos.O nome da pasta ou do arquivo ZIP de saída da compilação dentro de
location
. Por exemplo, se você especificarMyPath
parapath
,MyArtifact.zip
paraname
, o caminho e o nome serãoMyPath/MyArtifact.zip
. - artifacts/overrideArtifactName
-
Usado somente com o tipo de artefato do S3. Não é usado para outros tipos de artefatos.
Opcional. Se definido como
true
, o nome especificado no blocoartifacts
do arquivo buildspec substituiname
. Para obter mais informações, consulte Crie a referência de especificação para o CodeBuild. - artifacts/packaging
-
Usado somente com o tipo de artefato do
S3
. Não é usado para outros tipos de artefatos.Opcional. Especifica como empacotar os artefatos. Os valores permitidos são:
- NONE
-
Crie uma pasta que contenha os artefatos de compilação. Este é o valor padrão.
- ZIP
-
Crie um arquivo ZIP que contenha os artefatos de compilação.
secondaryArtifacts
Opcional. Uma matriz de objetos ProjectArtifacts que contêm informações sobre as configurações de artefatos secundários de um projeto de compilação. Você pode adicionar até 12 artefatos secundários. O secondaryArtifacts
usa muitas das mesmas configurações usadas pelo objeto artifacts.
cache
Obrigatório. Um objeto ProjectCache que contém informações sobre as configurações de cache desse projeto de compilação. Para obter mais informações, consulte Compilações em cache.
environment (ambiente)
Obrigatório. Um objeto ProjectEnvironment que contém informações sobre as configurações de ambiente de compilação desse projeto. Essas configurações incluem:
- environment/type
-
Obrigatório. O tipo de ambiente de build. Para obter mais informações, consulte type na Referência da API do CodeBuild.
- environment/image
-
Obrigatório. O identificador de imagem de Docker usado por esse ambiente de compilação. Em geral, esse identificador é expresso como
image-name
:tag
. Por exemplo, no repositório do Docker usado pelo CodeBuild para gerenciar as imagens do Docker, seriaaws/codebuild/standard:5.0
. No Docker Hub,maven:3.3.9-jdk-8
. No Amazon ECR,
. Para obter mais informações, consulte Imagens do Docker fornecidas pelo CodeBuild.account-id
.dkr.ecr.region-id
.amazonaws.com/your-Amazon-ECR-repo-name
:tag
- environment/computeType
-
Obrigatório. Especifica os recursos computacionais usados por esse ambiente de compilação. Para obter mais informações, consulte computeType na Referência da API do CodeBuild.
- environment/certificate
-
Opcional. O ARN do bucket do Amazon S3, prefixo do caminho e chave de objeto que contém o certificado codificado em PEM. A chave de objeto pode ser apenas o arquivo .pem ou um arquivo .zip que contenha o certificado codificado em PEM. Por exemplo, se o nome do bucket do Amazon S3 for
, o prefixo do caminho for<my-bucket>
e o nome da chave do objeto for<cert>
, os formatos aceitáveis para<certificate.pem>
certificate
serão
ou<my-bucket/cert/certificate.pem>
arn:aws:s3:::
.<my-bucket/cert/certificate.pem>
- environment/environmentVariables
-
Opcional. Uma matriz de objetos EnvironmentVariable que contém as variáveis de ambiente que você deseja especificar para esse ambiente de compilação. Cada variável de ambiente é expressa como um objeto que contém um
name
,value
etype
dename
,value
etype
.Os usuários do console e da AWS CLI podem ver todas as variáveis de ambiente. Caso você não tenha problema em relação à visibilidade da variável de ambiente, defina os campos
name
evalue
e definirtype
comoPLAINTEXT
.Recomendamos armazenar variáveis de ambiente com valores confidenciais, como um ID de chave de acesso da AWS, uma chave de acesso secreta da AWS ou uma senha, como um parâmetro no Amazon EC2 Systems Manager Parameter Store ou AWS Secrets Manager. Para
name
para esse parâmetro armazenado, defina um identificador para referência do CodeBuild.Se você usa o Amazon EC2 Systems Manager Parameter Store, para
value
, defina o nome do parâmetro conforme armazenado no Parameter Store. Definatype
comoPARAMETER_STORE
. Usando um parâmetro denominado/CodeBuild/dockerLoginPassword
como exemplo, definaname
comoLOGIN_PASSWORD
. Definavalue
como/CodeBuild/dockerLoginPassword
. Definatype
comoPARAMETER_STORE
.Importante
Se você usa o Amazon EC2 Systems Manager Parameter Store, recomendamos armazenar os parâmetros com nomes de parâmetro que comecem com
/CodeBuild/
(por exemplo,/CodeBuild/dockerLoginPassword
). É possível usar o console do CodeBuild para criar um parâmetro no Amazon EC2 Systems Manager. Selecione Criar parâmetro e siga as instruções na caixa de diálogo. (Nessa caixa de diálogo, em Chave do KMS, é possível especificar o ARN de uma chave do AWS KMS na conta. O Amazon EC2 Systems Manager usa essa chave para criptografar o valor do parâmetro durante o armazenamento e descriptografá-lo durante a recuperação.) Se você usar o console do CodeBuild para criar um parâmetro, o console começará o nome do parâmetro com/CodeBuild/
, pois ele está sendo armazenado. Para obter mais informações, consulte Systems Manager Parameter Store e Systems Manager Parameter Store Console Walkthrough no Guia do usuário do Amazon EC2 Systems Manager.Se o projeto de compilação se referir a parâmetros armazenados no Amazon EC2 Systems Manager Parameter Store, o perfil de serviço do projeto de compilação deverá permitir a ação
ssm:GetParameters
. Se você selecionar Novo perfil de serviço anteriormente, o CodeBuild incluirá essa ação no perfil de serviço padrão do projeto de compilação. No entanto, se você tiver selecionado Perfil de serviço existente, deverá incluir essa ação no perfil de serviço separadamente.Se o projeto de compilação fizer referência a parâmetros armazenados no Amazon EC2 Systems Manager Parameter Store com nomes de parâmetro que não comecem com
/CodeBuild/
e você selecionar Novo perfil de serviço, será necessário atualizar esse perfil de serviço para conceder acesso a nomes de parâmetro que não comecem com/CodeBuild/
. Isso porque esse perfil de serviço permite acesso apenas a nomes de parâmetro que comecem com/CodeBuild/
.Se você selecionar Novo perfil de serviço, o perfil de serviço incluirá permissão para descriptografar todos os parâmetros no namespace
/CodeBuild/
no Amazon EC2 Systems Manager Parameter Store.As variáveis de ambiente definidas por você substituem variáveis de ambiente existentes. Por exemplo, se a imagem do Docker já contiver uma variável de ambiente chamada
MY_VAR
com um valor demy_value
e você definir uma variável de ambiente chamadaMY_VAR
com um valor deother_value
,my_value
será substituído porother_value
. Da mesma maneira, se a imagem do Docker já contiver uma variável de ambiente chamadaPATH
com um valor de/usr/local/sbin:/usr/local/bin
e você definir uma variável de ambiente chamadaPATH
com um valor de$PATH:/usr/share/ant/bin
,/usr/local/sbin:/usr/local/bin
será substituído pelo valor literal$PATH:/usr/share/ant/bin
.Não defina nenhuma variável de ambiente com um nome que comece com
CODEBUILD_
. Este prefixo está reservado para uso interno.Se uma variável de ambiente com o mesmo nome é definida em vários locais, o valor será determinado como se segue:
-
O valor na chamada de operação de início de compilação tem a maior prioridade.
-
O valor na definição de projeto de compilação tem a precedência seguinte.
-
O valor na declaração de buildspec tem a menor prioridade.
Se você usar o Secrets Manager, para
value
, defina o nome do parâmetro conforme armazenado no Secrets Manager. Definatype
comoSECRETS_MANAGER
. Usando um segredo denominado/CodeBuild/dockerLoginPassword
como exemplo, definaname
comoLOGIN_PASSWORD
. Definavalue
como/CodeBuild/dockerLoginPassword
. Definatype
comoSECRETS_MANAGER
.Importante
Se você usa o Secrets Manager, recomendamos armazenar segredos com nomes que comecem com
/CodeBuild/
(por exemplo,/CodeBuild/dockerLoginPassword
). Para obter mais informações, consulte O que é o AWS Secrets Manager? no Guia do usuário do AWS Secrets Manager.Se o projeto de compilação se referir a segredos armazenados no Secrets Manager, o perfil de serviço do projeto de compilação deverá permitir a ação
secretsmanager:GetSecretValue
. Se você selecionar Novo perfil de serviço anteriormente, o CodeBuild incluirá essa ação no perfil de serviço padrão do projeto de compilação. No entanto, se você tiver selecionado Perfil de serviço existente, deverá incluir essa ação no perfil de serviço separadamente.Se o projeto de compilação fizer referência a segredos armazenados no Secrets Manager com nomes que não comecem com
/CodeBuild/
e você selecionar Novo perfil de serviço, será necessário atualizar esse perfil de serviço para conceder acesso a nomes de segredo que não comecem com/CodeBuild/
. O motivo é que o perfil de serviço permite acesso apenas a nomes de segredo que comecem com/CodeBuild/
.Se você selecionar Novo perfil de serviço, o perfil de serviço incluirá permissão para descriptografar todos os segredos no namespace
/CodeBuild/
no Secrets Manager. -
- environment/registryCredential
-
Opcional. Um objeto RegistryCredential que especifica as credenciais que fornecem acesso a um registro privado do Docker.
- environment/registryCredential/credential
-
Especifica o ARN ou o nome das credenciais criadas usando o AWS Managed Services. Você poderá usar o nome das credenciais somente se elas existirem na região atual.
- environment/registryCredential/credentialProvider
-
O único valor válido é
SECRETS_MANAGER
.
Quando isso for configurado:
-
imagePullCredentials
deve ser definido comoSERVICE_ROLE
. -
A imagem não pode ser selecionada nem uma imagem do Amazon ECR.
- environment/imagePullCredentialsType
-
Opcional. O tipo de credenciais que o CodeBuild usa para extrair imagens na compilação. Há dois valores válidos:
- CODEBUILD
-
CODEBUILD
especifica que o CodeBuild usa as próprias credenciais. Você deve editar a política de repositório do Amazon ECR para confiar na entidade principal do serviço do CodeBuild. - SERVICE_ROLE
-
Especifica que o CodeBuild usa o perfil de serviço do projeto de compilação.
Quando você usa uma conta ou imagem de registro privado, você deve usar credenciais
SERVICE_ROLE
. Quando você usa uma imagem selecionada do CodeBuild, é necessário usar credenciais deCODEBUILD
. - environment/privilegedMode
-
Defina
true
somente se planeja usar esse projeto de compilação para criar imagens do Docker. Do contrário, todas as compilações associadas que tentarem interagir com o daemon do Docker falharão. Você também deve iniciar o daemon do Docker, de maneira que as compilações possam interagir com ele. Uma maneira de fazer isso é inicializar o daemon do Docker na faseinstall
de seu arquivo buildspec executando os seguintes comandos de compilação. Não execute esses comandos caso você tenha especificado uma imagem de ambiente de compilação fornecida pelo CodeBuild com suporte do Docker.nota
Por padrão, o daemon do Docker está habilitado para compilações não VPC. Se você quiser usar contêineres do Docker para compilações da VPC, consulte Privilégio de tempo de execução e funcionalidades do Linux
no site do Docker Docs e ative o modo privilegiado. Além disso, o Windows não é compatível com o modo privilegiado. - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
serviceRole
Obrigatório. O ARN do perfil de serviço que o CodeBuild usa para interagir com serviços em nome do usuário (por exemplo, arn:aws:iam::
).account-id
:role/role-name
autoRetryLimit
Opcional. O número de repetições automáticas adicionais após a falha de uma compilação. Por exemplo, se o limite de repetição automática estiver definido como 2, o CodeBuild chamará a API RetryBuild
para repetir automaticamente a compilação por até 2 vezes adicionais.
timeoutInMinutes
Opcional. O número de minutos, entre 5 e 2.160 (36 horas), tempo depois do qual o CodeBuild para a compilação caso ela não tenha sido concluída. Se não especificado, o padrão de 60 será usado. Para determinar se e quando o CodeBuild interromperá uma compilação por tempo limite, execute o comando batch-get-builds
. Para saber se o build parou, observe a saída para um valor buildStatus
de FAILED
. Para saber qual foi o tempo limite do build, observe a saída para o valor endTime
associado ao valor phaseStatus
de TIMED_OUT
.
queuedTimeoutInMinutes
Opcional. O número de minutos, entre 5 e 480 (8 horas), tempo depois do qual o CodeBuild para a compilação caso ela ainda esteja na fila. Se não especificado, o padrão de 60 será usado.
encryptionKey
Opcional. O alias ou o ARN do AWS KMS key usado pelo CodeBuild para criptografar a saída da compilação. Se você especificar um alias, use o formato arn:aws:kms:
ou, se já houver um alias, use o formato region-ID
:account-ID
:key/key-ID
alias/
. Se não for especificada, a chave gerenciada da AWS para o Amazon S3 será usada.key-alias
tags
Opcional. Uma matriz de objetos Tag que fornecem as tags que você deseja associar a esse projeto de compilação. Você pode especificar até 50 tags. Essas tags podem ser usadas por qualquer serviço da AWS que seja compatível com tags de projeto de compilação do CodeBuild. Cada tag é expressa como um objeto com uma key
e um value
.
vpcConfig
Opcional. Um objeto VpcConfig que contém informações sobre a configuração da VPC para o projeto. Para obter mais informações, consulte Usar o AWS CodeBuild com o Amazon Virtual Private Cloud.
Essas propriedades incluem:
- vpcId
-
Obrigatório. O ID da VPC que o CodeBuild usa. Execute este comando para obter uma lista de todos os IDs de VPC na sua região:
aws ec2 describe-vpcs --region
<region-ID>
- sub-redes
-
Obrigatório. Uma matriz de IDs de sub-rede que incluem recursos usados pelo CodeBuild. Execute este comando para obter estes IDs:
aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region
<region-ID>
- securityGroupIds
-
Obrigatório. Uma matriz de IDs de grupo de segurança usados pelo CodeBuild para permitir acesso a recursos nas VPCs. Execute este comando para obter estes IDs:
aws ec2 describe-security-groups --filters "Name=vpc-id,Values=
<vpc-id>
" --<region-ID>
badgeEnabled
Opcional. Especifica se você deve incluir emblemas de compilação no projeto do CodeBuild. Defina como true
para habilitar a criação de emblemas. Caso contrário, como false
. Para obter mais informações, consulte Exemplo de emblemas de compilação com o CodeBuild.
logsConfig
Um objeto LogsConfig que contém informações sobre onde os logs dessa compilação estão localizados.
- logsConfig/cloudWatchLogs
-
Um objeto CloudWatchLogsConfig que contém informações sobre o envio de logs ao CloudWatch Logs.
- logsConfig/s3Logs
-
Um objeto S3LogsConfig que contém informações sobre o envio de logs ao Amazon S3.
fileSystemLocations
Opcional. Uma matriz de objetos ProjectFileSystemsLocation que contém informações sobre a configuração do Amazon EFS.
buildBatchConfig
Opcional. O objeto buildBatchConfig
é uma estrutura ProjectBuildBatchConfig que contém as informações de configuração de compilação em lote para o projeto.
- buildBatchConfig/serviceRole
-
O ARN do perfil de serviço para o projeto de compilação em lote.
- buildBatchConfig/combineArtifacts
-
Um valor booliano que especifica se os artefatos da compilação em lote devem ser combinados em um único local de artefato.
- buildBatchConfig/restrictions/maximumBuildsAllowed
-
O número máximo de compilações permitidas.
- buildBatchConfig/restrictions/computeTypesAllowed
-
Uma matriz de strings que especificam os tipos de computação que são permitidos para a compilação em lote. Consulte Build environment compute types para obter esses valores.
- buildBatchConfig/timeoutInMinutes
-
A quantidade máxima de tempo, em minutos, em que a compilação em lote deve ser concluída.
- buildBatchConfig/batchReportMode
-
Especifica como os relatórios de status de compilação são enviados ao provedor de origem para a compilação em lote. Os valores válidos são:
REPORT_AGGREGATED_BATCH
-
(Padrão) Agregue todos os status de compilação em um único relatório de status.
REPORT_INDIVIDUAL_BUILDS
-
Envie um relatório de status separado para cada compilação individual.
concurrentBuildLimit
Define o número máximo de compilações simultâneas permitidas para este projeto.
Novas compilações só são iniciadas se o número atual de compilações for menor ou igual a esse limite. Se a contagem de compilações atual atender a esse limite, novas compilações serão limitadas e não serão executadas.
Criar o projeto
Para criar o projeto, execute o comando create-project
novamente, transmitindo o arquivo JSON:
aws codebuild create-project --cli-input-json file://
<json-file>
Se for bem-sucedida, a representação JSON de um objeto do projeto aparecerá na saída do console. Consulte a sintaxe de resposta CreateProject para ver um exemplo desses dados.
Exceto o nome de projeto de build, você pode alterar qualquer configuração do projeto de build, posteriormente. Para obter mais informações, consulte Alterar configurações de um projeto de compilação (AWS CLI).
Para começar a executar um build, consulte Executar uma compilação (AWS CLI).
Se o código-fonte estiver armazenado em um repositório do GitHub e você quiser que o CodeBuild recompile o código-fonte sempre que uma alteração no código for enviada ao repositório, consulte Começar a executar compilações automaticamente (AWS CLI).
Criar um projeto de compilação (AWS SDKs)
Para obter informações sobre como usar o AWS CodeBuild com os SDKs da AWS, consulte Referência de SDKs e ferramentas da AWS.
Criar um projeto de compilação (AWS CloudFormation)
Para obter informações sobre como usar o AWS CodeBuild com o AWS CloudFormation, consulte the AWS CloudFormation template for CodeBuild no Guia do usuário do AWS CloudFormation.