Um arquivo de configuração de build contém instruções para o Cloud Build executar tarefas com base nas suas especificações. Por exemplo, o arquivo de configuração do build pode conter instruções para criar, empacotar e enviar imagens Docker.
Nesta página, explicamos o esquema do arquivo de configuração do Cloud Build. Para instruções sobre como criar e usar um arquivo de configuração de versão, consulte Como criar um arquivo de configuração de versão básico.
Estrutura de um arquivo de configuração da criação
Os arquivos de configuração da versão são modelados por meio do recurso Build da API Cloud Build.
É possível gravar o arquivo de configuração da criação usando a sintaxe YAML ou JSON. Se você enviar solicitações de criação usando ferramentas http de terceiros, como curl, use a sintaxe JSON.
A estrutura do arquivo de configuração da criação é a seguinte:
YAML
steps:
- name: string
args: [string, string, ...]
env: [string, string, ...]
allowFailure: boolean
allowExitCodes: [string (int64 format), string (int64 format), ...]
dir: string
id: string
waitFor: [string, string, ...]
entrypoint: string
secretEnv: string
volumes: object(Volume)
timeout: string (Duration format)
script: string
automapSubstitutions: boolean
results: object(Results)
- name: string
...
- name: string
...
timeout: string (Duration format)
queueTtl: string (Duration format)
logsBucket: string
options:
env: [string, string, ...]
secretEnv: string
volumes: object(Volume)
sourceProvenanceHash: enum(HashType)
machineType: enum(MachineType)
diskSizeGb: string (int64 format)
substitutionOption: enum(SubstitutionOption)
dynamicSubstitutions: boolean
automapSubstitutions: boolean
logStreamingOption: enum(LogStreamingOption)
logging: enum(LoggingMode)
defaultLogsBucketBehavior: enum(DefaultLogsBucketBehavior)
pool: object(PoolOption)
pubsubTopic: string
requestedVerifyOption: enum(RequestedVerifyOption)
workerRelease: string
substitutions: map (key: string, value: string)
tags: [string, string, ...]
serviceAccount: string
secrets: object(Secret)
availableSecrets: object(Secrets)
artifacts: object(Artifacts)
goModules: [object(GoModules), ...]
mavenArtifacts: [object(MavenArtifact), ...]
pythonPackages: [object(PythonPackage), ...]
npmPackages: [object(npmPackage), ...]
images:
- [string, string, ...]
JSON
{
"steps": [
{
"name": "string",
"args": [
"string",
"string",
"..."
],
"env": [
"string",
"string",
"..."
],
"allowFailure": "boolean",
"allowExitCodes: [
"string (int64 format)",
"string (int64 format)",
"..."
],
"dir": "string",
"id": "string",
"waitFor": [
"string",
"string",
"..."
],
"entrypoint": "string",
"secretEnv": "string",
"volumes": "object(Volume)",
"timeout": "string (Duration format)",
"script" : "string",
"automapSubstitutions" : "boolean",
"results": "object(Results)"
},
{
"name": "string"
...
},
{
"name": "string"
...
}
],
"timeout": "string (Duration format)",
"queueTtl": "string (Duration format)",
"logsBucket": "string",
"options": {
"sourceProvenanceHash": "enum(HashType)",
"machineType": "enum(MachineType)",
"diskSizeGb": "string (int64 format)",
"substitutionOption": "enum(SubstitutionOption)",
"dynamicSubstitutions": "boolean",
"automapSubstitutions": "boolean",
"logStreamingOption": "enum(LogStreamingOption)",
"logging": "enum(LoggingMode)",
"defaultLogsBucketBehavior": "enum(DefaultLogsBucketBehavior)"
"env": [
"string",
"string",
"..."
],
"secretEnv": "string",
"volumes": "object(Volume)",
"pool": "object(PoolOption)",
"pubsubTopic: string",
"requestedVerifyOption": "enum(RequestedVerifyOption)",
"workerRelease": "string"
},
"substitutions": "map (key: string, value: string)",
"tags": [
"string",
"string",
"..."
],
"serviceAccount": "string",
"secrets": "object(Secret)",
"availableSecrets": "object(Secrets)",
"artifacts": "object(Artifacts)",
"goModules": [object(GoModules), ...],
"mavenArtifacts": ["object(MavenArtifact)", ...],
"pythonPackages": ["object(PythonPackage)", ...],
"npmPackages": ["object(npmPackage)", ...],
"images": [
"string",
"string",
"..."
]
}
Cada uma das seções do arquivo de configuração da versão define uma parte da tarefa que você quer que o Cloud Build execute:
Etapas de versão
Uma etapa de versão especifica uma ação que o Cloud Build deve executar. Para cada etapa da criação, o Cloud Build executa um contêiner de Docker como uma instância de docker run. As etapas da criação são análogas aos comandos em um script e oferecem a flexibilidade de execução de instruções arbitrárias na versão. Se você puder inserir uma ferramenta de build em um contêiner, o Cloud Build poderá executá-la como parte da versão. Por padrão, o Cloud Build executa todas as etapas de um build em série na mesma máquina.
Caso haja etapas que
possam ser executadas simultaneamente, use a opção waitFor.
É possível incluir até 300 etapas de build no arquivo de configuração.
Use o campo steps, do arquivo de configuração da build para especificar uma etapa de build. Veja um
snippet do tipo de configuração que é possível definir no campo steps:
YAML
steps:
- name: 'gcr.io/cloud-builders/kubectl'
args: ['set', 'image', 'deployment/mydepl', 'my-image=gcr.io/my-project/myimage']
env:
- 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
- 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/my-project-id/myimage', '.']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/kubectl",
"args": [
"set",
"image"
"deployment/mydepl"
"my-image=gcr.io/my-project/myimage"
],
"env": [
"CLOUDSDK_COMPUTE_ZONE=us-east4-b",
"CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
]
},
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/my-project-id/myimage",
"."
]
}
]
}
name
Use o campo name de uma etapa da criação para
especificar um criador de nuvem, que é
uma imagem de contêiner em que estão sendo executadas ferramentas comuns. Use um builder em uma etapa de build para executar suas tarefas.
O snippet a seguir mostra etapas da criação usadas
para chamar os criadores bazel,
gcloud e
docker:
YAML
steps:
- name: 'gcr.io/cloud-builders/bazel'
...
- name: 'gcr.io/cloud-builders/gcloud'
...
- name: 'gcr.io/cloud-builders/docker'
...
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/bazel"
...
},
{
"name": "gcr.io/cloud-builders/gcloud"
...
},
{
"name": "gcr.io/cloud-builders/docker"
...
}
]
}
args
O campo argsde uma etapa da criação recebe uma lista de argumentos e os transmite
ao criador referido no campo name. Os argumentos transmitidos ao builder são
transmitidos à ferramenta em execução no builder, o que permite invocar qualquer
comando compatível com a ferramenta. Se o criador usado na etapa da criação tiver um entrypoint, args será usado como argumentos para esse entrypoint. Se o criador não definir um entrypoint, o primeiro elemento em args será usado como entrypoint e os demais serão usados como argumento.
É possível criar até 100 argumentos por etapa. O tamanho máximo do argumento é de 10.000 caracteres.
O snippet a seguir invoca o comando docker build e instala as dependências
do Maven:
YAML
steps:
- name: 'gcr.io/cloud-builders/mvn'
args: ['install']
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/my-project-id/myimage', '.']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/mvn",
"args": [
"install"
]
},
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/my-project-id/myimage",
"."
]
}
]
}
env
O campo env de uma etapa da criação recebe uma lista de variáveis de ambiente a serem usadas
na execução da etapa. As variáveis estão no formato KEY=VALUE.
Na configuração da criação a seguir, o campo env, da etapa da criação define a zona do Compute Engine e o cluster do GKE antes de executar o kubectl:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
- name: 'gcr.io/cloud-builders/kubectl'
args: ['set', 'image', 'deployment/myimage', 'frontend=gcr.io/myproject/myimage']
env:
- 'CLOUDSDK_COMPUTE_ZONE=us-east1-b'
- 'CLOUDSDK_CONTAINER_CLUSTER=node-example-cluster'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/myproject/myimage",
"."
]
},
{
"name": "gcr.io/cloud-builders/kubectl",
"args": [
"set",
"image",
"deployment/myimage",
"frontend=gcr.io/myproject/myimage"
],
"env": [
"CLOUDSDK_COMPUTE_ZONE=us-east1-b",
"CLOUDSDK_CONTAINER_CLUSTER=node-example-cluster"
]
}
]
}
allowFailure
Em uma etapa de build, se você definir o valor do campo allowFailure como true e a etapa falhar, o build será bem-sucedido, desde que todas as outras etapas sejam bem-sucedidas.
Se todas as etapas de um build tiverem allowFailure definido como true e todas as etapas falharem, o status do build ainda será Successful.
allowExitCodes tem prioridade sobre este campo.
O snippet de código a seguir permite que o build seja bem-sucedido quando a primeira etapa falha:
YAML
steps:
- name: 'ubuntu'
args: [ '-c', 'exit 1']
allowFailure: true
- name: 'ubuntu'
args: ['echo', 'Hello World']
JSON
{
"steps": [
{
"name": "ubuntu",
"args": [
"-c",
"exit -1"
],
"allowFailure": true,
},
{
"name": "ubuntu",
"args": [
"echo",
"Hello World"
]
}
]
}
allowExitCodes
Use o campo allowExitCodes para especificar que uma falha na etapa de build pode ser ignorada quando essa etapa retornar um código de saída específico.
Se uma etapa de build falhar com um código de saída correspondente ao valor fornecido em allowExitCodes, o Cloud Build vai permitir que essa etapa falhe sem que todo o build falhe.
Se 100% das etapas de build falharem, mas todas as etapas forem encerradas com um código especificado no campo allowExitCodes, o build ainda será bem-sucedido.
No entanto, se a etapa de build falhar e produzir outro código de saída que não corresponda ao valor especificado em allowExitCodes, o build geral vai falhar.
Os códigos de saída relevantes para o build dependem do software. Por exemplo, "1" é um código de saída comum no Linux. Também é possível definir seus próprios códigos de saída nos scripts. O campo allowExitCodes aceita números até o máximo de 255.
Esse campo tem precedência sobre allowFailure.
O snippet de código a seguir permite que o build seja bem-sucedido quando a primeira etapa falha com um dos códigos de saída fornecidos:
YAML
steps:
- name: 'ubuntu'
args: ['-c', 'exit 1']
allowExitCodes: [1]
- name: 'ubuntu'
args: ['echo', 'Hello World']
JSON
{
"steps": [
{
"name": "ubuntu",
"args": [
"-c",
"exit 1"
],
"allowExitCodes": [1],
},
{
"name": "ubuntu",
"args": [
"echo",
"Hello World"
]
}
]
}
dir
Use o campo dir em uma etapa de versão para definir um diretório de trabalho a ser usado ao executar o contêiner da etapa. Se você definir o campo dir na etapa de criação,
o diretório de trabalho será definido como /workspace/<dir>. Se esse valor for um caminho relativo, ele é relativo ao diretório de trabalho da criação. Se esse valor for absoluto, talvez ele esteja fora do diretório de trabalho da criação. Nesse caso, o conteúdo do caminho pode não ser permanente durante as execuções de etapas de criação, a não ser que seja especificado um volume para esse caminho.
O snippet de código a seguir define o diretório de trabalho para a etapa de build como
/workspace/examples/hello_world:
YAML
steps:
- name: 'gcr.io/cloud-builders/go'
args: ['install', '.']
env: ['PROJECT_ROOT=hello']
dir: 'examples/hello_world'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/go",
"args": [
"install",
"."
],
"env": [
"PROJECT_ROOT=hello"
],
"dir": "examples/hello_world"
}
]
}
ID
Use o campo id para definir um identificador exclusivo para uma etapa de build. id é usado
com o campo waitFor para configurar a ordem em que as etapas de criação devem ser
executadas. Para receber instruções sobre como usar waitFor e id, consulte Como configurar a ordem das etapas de
criação.
waitFor
Use o campo waitFor em uma etapa de criação para especificar as etapas que precisam ser executadas antes que a etapa de criação seja executada. Se nenhum valor for informado para waitFor, a etapa de criação aguardará até que todas as etapas de criação anteriores, que façam parte da solicitação da criação, sejam concluídas com êxito, antes de proceder à execução. Para receber instruções sobre como usar waitFor e id, consulte Como configurar a ordem das etapas de criação.
entrypoint
Se você não quiser usar o entrypoint padrão do criador em uma etapa de criação, use entrypoint para especificar um. Se você não definir esse campo, o Cloud Build usará o entrypoint do criador. O snippet a seguir define os entrypoints da etapa de criação npm:
YAML
steps:
- name: 'gcr.io/cloud-builders/npm'
entrypoint: 'node'
args: ['--version']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/npm",
"entrypoint": "node",
"args": [
"--version"
]
}
]
}
secretEnv
Uma lista de variáveis de ambiente criptografadas com uma chave de criptografia do Cloud KMS. Esses valores precisam ser especificados nos segredos da criação. Para informações sobre como usar esse campo, consulte Como usar a variável criptografada em solicitações de criação.
volumes
Um Volume
é um volume de contêiner do Docker montado em etapas de build para manter arquivos
entre as etapas de build. Quando o Cloud Build executa uma etapa de criação, ele monta automaticamente um volume workspace em /workspace. Especifique mais volumes a serem montados nos contêineres das etapas de criação usando o campo volumes para suas etapas
Por exemplo, o arquivo de configuração da criação a seguir grava um arquivo em um volume
na primeira etapa e faz a respectiva leitura na segunda etapa. Se o caminho /persistent_volume
não for especificado por essas etapas como um volume permanente,
a primeira etapa gravará o arquivo nesse caminho e depois esse arquivo
será descartado antes da execução da segunda etapa Ao especificar o volume com o mesmo nome nas duas etapas, o conteúdo de /persistent_volume na primeira etapa é mantido na segunda etapa.
YAML
steps:
- name: 'ubuntu'
volumes:
- name: 'vol1'
path: '/persistent_volume'
entrypoint: 'bash'
args:
- '-c'
- |
echo "Hello, world!" > /persistent_volume/file
- name: 'ubuntu'
volumes:
- name: 'vol1'
path: '/persistent_volume'
args: ['cat', '/persistent_volume/file']
JSON
{
"steps": [
{
"name": "ubuntu",
"volumes": [
{
"name": "vol1",
"path": "/persistent_volume"
}
],
"entrypoint": "bash",
"args": [
"-c",
"echo \"Hello, world!\" > /persistent_volume/file\n"
]
},
{
"name": "ubuntu",
"volumes": [
{
"name": "vol1",
"path": "/persistent_volume"
}
],
"args": [
"cat",
"/persistent_volume/file"
]
}
]
}
timeout
Para definir um limite de tempo para execução da etapa de criação, use o campo timeout em uma etapa. Se você não definir esse campo, a etapa será executada até ser concluída ou
até que o próprio build expire. O campo timeout de uma etapa de build não pode
exceder o valor timeout especificado para o build.
timeout é especificado em segundos (usando o formato
Duration)
com até nove dígitos fracionários, terminando em s (por exemplo: 3.5s).
Na seguinte configuração de build, a etapa ubuntu expira após 500 segundos:
YAML
steps:
- name: 'ubuntu'
args: ['sleep', '600']
timeout: 500s
- name: 'ubuntu'
args: ['echo', 'hello world, after 600s']
JSON
{
"steps": [
{
"name": "ubuntu",
"args": [
"sleep",
"600"
],
"timeout": "500s"
},
{
"name": "ubuntu",
"args": [
"echo",
"hello world, after 600s"
]
}
]
}
script
Use o campo script em uma etapa de build para especificar um script de shell a ser executado na
etapa. Se você especificar script em uma etapa de build, não será possível especificar args
ou entrypoint na mesma etapa. Para instruções sobre como usar o campo script, consulte
Como executar scripts bash.
automapSubstitutions
Se definido como true, mapeie automaticamente todas as substituições e disponibilize-as
como variáveis de ambiente em uma única etapa. Se definido como false, ignore as substituições dessa etapa. Para ver exemplos, consulte Substituir valores de variáveis.
resultados
Permite que uma etapa de build armazene dados e os anexe a um atestado nos resultados do build após a conclusão. Os dados armazenados precisam ser um par de chave-valor, em que a chave é uma string e o valor é um objeto JSON. Um resultado precisa ter os seguintes campos:
name: o nome do resultado. Esse nome aparece no atestado resultante nos resultados do build. Também é possível usar esse nome para referenciar o resultado em uma etapa de build. Por exemplo, é possível anexar valores ao resultado usando umscriptna mesma etapa de build.attestationContent: (opcional) o nome do atestado. Pode ser qualquer valor e vai aparecer no atestado resultante nos resultados do build. Esse campo só é necessário se você planeja validar os atestados de build.attestationType: (opcional) o tipo de atestado. Pode ser qualquer valor e vai aparecer no atestado resultante nos resultados do build. Esse campo só é necessário se você planeja validar os atestados de build.
A versão a seguir usa uma configuração de resultado para gerar um atestado
que permite aos usuários verificar se a versão usou apenas URLs com prefixos compatíveis
para criar a imagem. Neste exemplo, um resultado é definido como allowlisted_prefixes. Em seguida,
allowlisted_prefixes é definido como o par de chave-valor de allowlisted_prefixes
e [\"github.com\", \"gitlab.com\"] e, em seguida, anexado como um atestado aos
resultados do build.
YAML
steps:
- name: "gcr.io/cloud-builders/docker"
id: "build-step"
args: ["build", "-t", "us-docker.pkg.dev/my-project/demo/helloworld-image", "."]
- name: "ubuntu"
id: "check-source-fetch-urls"
results:
- name: "allowlisted_prefixes"
attestationContent: "remote_fetch_allow_list"
attestationType: "https://cloudbuild.googleapis.com/attestations/build_content_restrictions"
script: |
#!/bin/bash
prefixes="[\"github.com\", \"gitlab.com\"]"
echo "allowlisted_prefixes=$prefixes" >> $RESULTS
cat $RESULTS
images:
- "us-docker.pkg.dev/my-project/demo/helloworld-image"
options:
requested_verify_option: VERIFIED
defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"id": "build-step",
"args": [
"build",
"-t",
"us-docker.pkg.dev/my-project/demo/helloworld-image",
"."
]
},
{
"name": "ubuntu",
"id": "check-source-fetch-urls",
"results": [
{
"name": "allowlisted_prefixes",
"attestationContent": "remote_fetch_allow_list",
"attestationType": "https://cloudbuild.googleapis.com/attestations/build_content_restrictions"
}
],
"script": "#!/bin/bash\nprefixes=\"[\\\"github.com\\\", \\\"gitlab.com\\\"]\"\necho \"allowlisted_prefixes=$prefixes\" >> $RESULTS\ncat $RESULTS\n"
}
],
"images": [
"us-docker.pkg.dev/my-project/demo/helloworld-image"
],
"options": {
"requested_verify_option": "VERIFIED",
"defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET"
}
}
timeout
Use o campo timeout fora de uma etapa de build para definir o limite de tempo geral para executar o build.
Se esse tempo acabar, o trabalho no build será interrompido e o
status do build será
TIMEOUT.
Se timeout não for definido, o build usará um timeout padrão de 60 minutos. O
valor máximo de timeout é 24 horas. timeout é especificado em segundos,
usando o formato
Duração,
com até nove dígitos fracionários, terminando com s (por exemplo:
3.5s).
No snippet a seguir, timeout está definido como 660 segundos, para evitar que a criação exceda o tempo limite devido ao modo de suspensão:
YAML
steps:
- name: 'ubuntu'
args: ['sleep', '600']
timeout: 660s
JSON
{
"steps": [
{
"name": "ubuntu",
"args": [
"sleep",
"600"
]
}
],
"timeout": "660s"
}
queueTtl
Use o campo queueTtl para especificar o tempo que uma versão pode ficar na fila. Se
uma versão estiver na fila por mais tempo do que o valor definido em queueTtl, ela expirará
e o status da versão
será definido como EXPIRED. Se nenhum valor for fornecido, o Cloud Build usará o valor padrão de
3600s (1 hora). queueTtl começa a contar a partir de createTime. queueTtl precisa ser especificado em segundos com até nove dígitos fracionários, terminados por "s", por exemplo, 3.5s.
No snippet a seguir, timeout está definido como 20s e queueTtl está definido como 10s.
queueTtl começa a contar em createTime, que é o momento em que o build
é solicitado, e timeout começa a contar em startTime, que é o momento em que o
build começa. Portanto, queueTtl vai expirar em createTime + 10s, a menos que
o build comece até lá.
YAML
steps:
- name: 'ubuntu'
args: ['sleep', '5']
timeout: 20s
queueTtl: 10s
JSON
{
"steps": [
{
"name": "ubuntu",
"args": [
"sleep",
"5"
]
}
],
"timeout": "20s",
"queueTtl": "10s"
}
logsBucket
Defina o campo logsBucket de um build para especificar um bucket do Cloud Storage
em que os registros de build precisam ser gravados. Se você não definir esse campo, o Cloud Build
vai usar o valor de defaultLogsBucketBehavior
para armazenar os registros de build em um bucket criado pelo Cloud Build no
Cloud Storage.
O snippet a seguir define o Cloud Build para armazenar registros de build em um bucket personalizado no Cloud Storage.
YAML
steps:
- name: 'gcr.io/cloud-builders/go'
args: ['install', '.']
logsBucket: 'gs://mybucket'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/go",
"args": [
"install",
"."
]
}
],
"logsBucket": "gs://mybucket"
}
options
Use o campo options para especificar os seguintes argumentos opcionais do seu build:
enableStructuredLogging:
ativa o mapeamento de campos de registro de build especificados
para campos LogEntry
quando o registro de build é enviado ao Logging.
Por exemplo, se o registro de build tiver um message, a mensagem vai aparecer
em textPayload ou jsonPayload.message na entrada de registro
resultante. Os campos de registro de build que não podem ser mapeados aparecem na entrada de registro
jsonPayload. Para mais informações, consulte
Mapear campos de registro de build para campos de entrada de registro.
env : uma lista de definições de variáveis de ambiente global para todas as etapas de criação nessa criação. Se uma variável for definida tanto globalmente quanto em uma etapa de criação, a variável usará o valor da etapa de criação. Os elementos estão no formato KEY=VALUE para a variável de ambiente KEY receber o valor VALUE.
secretEnv:
uma lista de variáveis de ambiente globais, criptografadas usando uma chave de criptografia do Cloud Key Management Service, que estarão disponíveis para todas as etapas de build neste build.
É preciso que esses valores sejam especificados no Secret da criação.
volumes : uma lista de volumes a serem montados globalmente para TODAS as etapas de criação. Cada volume é criado como um volume vazio, antes do início do processo de criação. Após a conclusão da versão, os volumes e seus conteúdos são descartados. Os caminhos e nomes de volume globais não podem entrar em conflito com os volumes definidos em uma etapa de criação. O uso de um volume global em uma criação com apenas uma etapa não é válido porque isso significa uma solicitação de criação com uma configuração incorreta.
pubsubTopic:
opção para
fornecer um nome de tópico do Pub/Sub
para receber notificações de status
do build. Se você não fornecer um nome, o Cloud Build usará
o nome de tópico padrão de cloud-builds. O snippet a seguir especifica
que o nome do tópico do Pub/Sub é my-topic:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
options:
pubsubTopic: 'projects/my-project/topics/my-topic'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/myproject/myimage",
"."
]
}
],
"options": {
"pubsubTopic": "projects/my-project/topics/my-topic"
}
}
sourceProvenanceHash : defina a opção sourceProvenanceHash para especificar o algoritmo de hash para a origem. O snippet a seguir especifica que o algoritmo hash é SHA256:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
options:
sourceProvenanceHash: ['SHA256']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/myproject/myimage",
"."
]
}
],
"options": {
"sourceProvenanceHash": ["SHA256"]
}
}
machineType:
o Cloud Build oferece quatro tipos de máquina virtual com grande quantidade de CPUs para executar seus builds: dois tipos de máquina com 8 CPUs e dois tipos de máquina com 32 CPUs. O Cloud Build também
oferece dois tipos adicionais de máquina virtual com 1 CPU e 2 CPUs para executar os builds. O tipo de máquina padrão é e2-standard-2 com 2 CPUs.
Solicitar uma máquina virtual com mais CPUs do que o padrão pode aumentar o tempo de inicialização do build. Adicione a opção machineType para solicitar uma máquina virtual com mais CPUs do que o padrão:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
options:
machineType: 'E2_HIGHCPU_8'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/myproject/myimage",
"."
]
},
],
"options": {
"machineType": "E2_HIGHCPU_8"
}
}
Para receber mais informações sobre como usar a opção machineType, consulte Como acelerar as criações .
diskSizeGb : use a opção diskSizeGb para solicitar um tamanho de disco personalizado para sua criação. O
tamanho máximo que você pode solicitar é de 4.000 GB.
O snippet a seguir solicita um tamanho de disco de 200 GB:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
options:
diskSizeGb: '200'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/myproject/myimage",
"."
]
}
],
"options": {
"diskSizeGb": '200'
}
}
logStreamingOption: use essa opção para especificar que seja feito stream de registros de criação para o Cloud Storage. Por padrão, o Cloud Build coleta registros de criação na conclusão da criação. Essa opção especifica se você quer transmitir registros de criação em tempo real por meio do processo de criação. O snippet a seguir especifica que os registros de versão são transmitidos para o Cloud Storage:
YAML
steps:
- name: 'gcr.io/cloud-builders/go'
args: ['install', '.']
options:
logStreamingOption: STREAM_ON
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/go",
"args": [
"install",
"."
]
}
],
"options": {
"logStreamingOption": "STREAM_ON"
}
}
logging:
use essa opção para especificar se você quer armazenar registros de build no
Cloud Logging ou no Cloud Storage:
GCS_ONLY: os registros de build são enviados para buckets do Cloud Storage.CLOUD_LOGGING_ONLY: os registros de build são enviados para buckets do Logging.LEGACY: os registros de build são enviados para buckets nos dois locais. Seloggingnão estiver definido, o Cloud Build usará esse valor.NONE: os registros de build não são armazenados.
Para mais informações sobre os benefícios e as considerações sobre o armazenamento de registros de build, consulte Opções de armazenamento de registros de build.
O snippet a seguir especifica que os registros de build são armazenados no Cloud Storage:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
options:
logging: GCS_ONLY
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/myproject/myimage",
"."
]
}
],
"options": {
"logging": "GCS_ONLY"
}
}
Use esse campo quando logging
estiver configurado para enviar os registros de build ao Cloud Storage.
Quando logging tem um valor de GCS_ONLY, Legacy ou é indefinido, os
registros de build são enviados para buckets no Cloud Storage. Nesse caso,
o Cloud Build avalia os campos logsBucket e
defaultLogsBucketBehavior para determinar qual
bucket do Cloud Storage recebe os registros de build:
logsBucket |
defaultLogsBucketBehavior |
Onde os registros de build são armazenados |
|---|---|---|
| Bucket especificado | Valor ignorado | No bucket especificado em logsBucket |
| Nenhum valor | REGIONAL_USER_OWNED_BUCKET |
Em um bucket criado pelo Cloud Build e de propriedade do usuário |
| Nenhum valor | LEGACY_BUCKET |
Em um bucket criado pelo Cloud Build e de propriedade do Google Cloud |
| Nenhum valor | Nenhum valor | Em um bucket criado pelo Cloud Build e de propriedade do usuário. Se a criação desse bucket falhar, os registros de build serão armazenados em um bucket criado pelo Cloud Build e de propriedade do Google Cloud. |
Para mais informações, consulte Opções de armazenamento de registros de build.
A configuração de build a seguir define o campo defaultLogsBucketBehavior como o valor REGIONAL_USER_OWNED_BUCKET:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
options:
defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"us-central1-docker.pkg.dev/myproject/myrepo/myimage",
"."
]
}
],
"options": {
"defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET"
}
}
dynamicSubstitutions:
use essa opção para ativar ou desativar explicitamente a
expansão de parâmetro bash
nas substituições. Se o build for invocado por um gatilho, o campo dynamicSubstitutions será sempre definido como "true" e não precisará ser especificado no arquivo de configuração da compilação. Caso sua versão seja invocada manualmente, você precisa
definir o campo dynamicSubstitutions como verdadeiro para que as expansões de parâmetro bash sejam
interpretadas ao executar sua versão.
automapSubstitutions:
mapeia automaticamente todas as substituições para variáveis de ambiente que estarão
disponíveis em todo o build. Para ver exemplos, consulte
Substituir valores de variáveis.
substitutionOption : você definirá essa opção com o campo substitutions abaixo para especificar o comportamento quando houver um erro nas verificações de substituição.
pool:
defina o valor desse campo como o nome do recurso do pool particular para executar
o build. Para instruções sobre como executar um build em um pool particular, consulte
Como executar builds em um pool particular.
requestedVerifyOption:
defina o valor de requestedVerifyOption como VERIFIED para ativar e verificar a
geração de
atestados e
metadados de procedência para
seu build. Depois de definido, os builds só serão marcados como SUCCESS
se os atestados e a procedência forem gerados.
workerRelease:
escolha um canal de lançamento ou uma
versão específica.
A configuração de build a seguir define o campo workerRelease como o canal
normal:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
options:
workerRelease: regular
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"us-central1-docker.pkg.dev/myproject/myrepo/myimage",
"."
]
}
],
"options": {
"workerRelease": "regular"
}
}
O exemplo a seguir define o campo workerRelease como uma versão específica:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
options:
workerRelease: 2026.09
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"us-central1-docker.pkg.dev/myproject/myrepo/myimage",
"."
]
}
],
"options": {
"workerRelease": "2026.09"
}
}
substitutions
Use substituições em seu arquivo de configuração da criação para substituir variáveis específicas no momento da criação. As substituições são úteis para variáveis que tenham um valor não conhecido até o momento da criação ou para reutilizar uma solicitação de versão existente com diferentes valores variáveis. Por padrão, a criação retornará um erro se faltar uma variável de substituição ou uma substituição. No entanto, é possível usar a opção ALLOW_LOOSE para ignorar essa verificação.
O snippet a seguir usa substituições para imprimir "hello world". A opção de substituição ALLOW_LOOSE está definida, isto é, a criação não retornará um erro se faltar uma variável de substituição ou uma substituição.
YAML
steps:
- name: 'ubuntu'
args: ['echo', 'hello ${_SUB_VALUE}']
substitutions:
_SUB_VALUE: world
options:
substitution_option: 'ALLOW_LOOSE'
JSON
{
"steps": [
{
"name": "ubuntu",
"args": [
"echo",
"hello ${_SUB_VALUE}"
]
}
],
"substitutions": {
"_SUB_VALUE": "world"
},
"options": {
"substitution_option": "ALLOW_LOOSE"
}
}
Para receber mais instruções sobre o uso de substitutions, consulte Como substituir valores de variável.
tags
Use o campo tags para organizar suas criações em grupos e filtrar suas criações. A configuração a seguir define duas tags chamadas mytag1 e mytag2:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
...
- name: 'ubuntu'
...
tags: ['mytag1', 'mytag2']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker"
},
{
"name": "ubuntu"
}
],
"tags": [
"mytag1",
"mytag2"
]
}
availableSecrets
Use esse campo para referenciar um ou mais secrets do Secret Manager ou do Cloud KMS na solicitação de build. O Cloud Build pode usar esses secrets para realizar uma ação durante o processo de build, como fazer login em uma conta.
Secret Manager
Para usar secrets do Secret Manager no arquivo de configuração do build, adicione um campo secretManager ao campo availableSecrets no arquivo de configuração do build. O campo secretManager contém um ou mais pares dos campos versionName e env:
versionName: o caminho para o secret no Secret Manager.env: um nome local (variável de ambiente) que as etapas de build podem usar para fazer referência ao secret.
O campo secretEnv em uma etapa de build especifica quais variáveis de ambiente podem ser usadas nessa etapa.
A configuração a seguir mostra como fazer login no Docker usando um nome de usuário e uma senha do Docker armazenados no Secret Manager:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
entrypoint: 'bash'
args: ['-c', 'docker login --username=$$USERNAME --password=$$PASSWORD']
secretEnv: ['USERNAME', 'PASSWORD']
availableSecrets:
secretManager:
- versionName: projects/PROJECT_ID/secrets/DOCKER_PASSWORD_SECRET_NAME/versions/DOCKER_PASSWORD_SECRET_VERSION
env: 'PASSWORD'
- versionName: projects/PROJECT_ID/secrets/DOCKER_USERNAME_SECRET_NAME/versions/DOCKER_USERNAME_SECRET_VERSION
env: 'USERNAME'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"entrypoint": "bash",
"args": [
"-c",
"docker login --username=$$USERNAME --password=$$PASSWORD"
],
"secretEnv": [
"USERNAME",
"PASSWORD"
]
}
],
"availableSecrets": {
"secretManager": [{
"versionName": "projects/PROJECT_ID/secrets/DOCKER_PASSWORD_SECRET_NAME/versions/DOCKER_PASSWORD_SECRET_VERSION",
"env": "PASSWORD"
}, {
"versionName": "projects/PROJECT_ID/secrets/DOCKER_USERNAME_SECRET_NAME/versions/DOCKER_USERNAME_SECRET_VERSION",
"env": "USERNAME"
}]
}
}
Para mais informações, consulte Como usar secrets.
Cloud KMS
Para usar as chaves do Cloud KMS no arquivo de configuração do build, adicione um campo inline
ao campo availableSecrets no arquivo de configuração do build. O campo inline
contém um ou mais pares de kmsKeyName e envMap:
kmsKeyName: o caminho para a chave do Cloud KMS.envMap: um nome local (mapeamento de ambiente) que as etapas de build podem usar para fazer referência ao secret.
O campo secretEnv em uma etapa de build especifica quais variáveis de ambiente podem ser usadas nessa etapa.
A configuração a seguir mostra como fazer login no Docker usando um nome de usuário e uma senha do Docker armazenados no Cloud KMS.
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
entrypoint: 'bash'
args: ['-c', 'docker login --username=$$USERNAME --password=$$PASSWORD']
secretEnv: ['USERNAME', 'PASSWORD']
- name: 'gcr.io/cloud-builders/docker'
entrypoint: 'bash'
args: ['-c', 'docker pull $$USERNAME/IMAGE:TAG']
secretEnv: ['USERNAME']
availableSecrets:
inline:
- kmsKeyName: projects/PROJECT_ID/locations/global/keyRings/USERNAME_KEYRING_NAME/cryptoKeys/USERNAME_KEY_NAME
envMap:
USERNAME: 'ENCRYPTED_USERNAME'
- kmsKeyName: projects/PROJECT_ID/locations/global/keyRings/PASSWORD_KEYRING_NAME/cryptoKeys/PASSWORD_KEY_NAME
envMap:
PASSWORD: 'ENCRYPTED_PASSWORD'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"entrypoint": "bash",
"args": [
"-c",
"docker login --username=$$USERNAME --password=$$PASSWORD"
],
"secretEnv": [
"USERNAME",
"PASSWORD"
]
},
{
"name": "gcr.io/cloud-builders/docker",
"entrypoint": "bash",
"args": [
"-c",
"docker pull $$USERNAME/REPOSITORY:TAG"
],
"secretEnv": [
"USERNAME"
]
}
],
"availableSecrets": {
"inline": [{
"kmsKeyName": "projects/PROJECT_ID/locations/global/keyRings/USERNAME_KEYRING_NAME/cryptoKeys/USERNAME_KEY_NAME",
"envMap": {
"USERNAME": "ENCRYPTED_USERNAME"
}
},
{
"kmsKeyName": "projects/PROJECT_ID/locations/global/keyRings/PASSWORD_KEYRING_NAME/cryptoKeys/PASSWORD_KEY_NAME",
"envMap": {
"PASSWORD": "ENCRYPTED_PASSWORD"
}
}]
}
}
secrets
Um secret combina um conjunto de variáveis de ambiente secretas contendo valores criptografados com a chave do Cloud KMS a ser usada para descriptografar o valor.
serviceAccount
Use este campo para especificar a conta de serviço do IAM a ser usada no momento da criação. Para mais informações, consulte Como configurar contas de serviço especificadas pelo usuário.
Não é possível especificar a conta de serviço legada do Cloud Build nesse campo.
images
O campo images no arquivo de configuração do build especifica uma ou mais imagens do Docker do Linux
a serem enviadas pelo Cloud Build para o Artifact Registry. É possível ter um
build que execute tarefas sem produzir imagens Docker do Linux, mas se você
criar imagens e não as enviar para o registro, elas serão descartadas após a
conclusão do build. Se uma imagem especificada não for produzida durante a versão, a versão apresentará falha. Para mais informações sobre como armazenar imagens, consulte
Armazenar artefatos no Artifact Registry.
A seguinte configuração da criação define o campo images para armazenar a imagem criada:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
images: ['gcr.io/myproject/myimage']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/myproject/myimage",
"."
]
}
],
"images": [
"gcr.io/myproject/myimage"
]
}
artifacts
O campo artifacts especifica um ou mais
artefatos a serem armazenados no Cloud Storage ou
no Artifact Registry após a conclusão de todas as etapas do build.
objects
No campo artifacts, o campo object especifica um ou mais artefatos
a serem armazenados no Cloud Storage.
Para mais informações, consulte Armazenar artefatos de build no Cloud Storage.
A configuração de build a seguir define o campo artifacts para armazenar o pacote Go
criado em gs://mybucket/:
YAML
steps:
- name: 'gcr.io/cloud-builders/go'
args: ['build', 'my-package']
artifacts:
objects:
location: 'gs://mybucket/'
paths: ['my-package']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/go",
"args": [
"build",
"my-package"
]
}
],
"artifacts": {
"objects": {
"location": "gs://mybucket/",
"paths": [
"my-package"
]
}
}
}
goModules
O campo goModules permite fazer upload de módulos do Go que não são de contêiner para repositórios do Go no Artifact Registry. Para mais informações, consulte
Criar e testar aplicativos Go.
O campo repository_location especifica o repositório do Artifact Registry
para armazenar seus pacotes. O campo module_path especifica o diretório local
que contém o módulo Go para upload. Esse diretório precisa conter um arquivo go.mod.
Recomendamos usar um caminho absoluto para o valor de module_path. É possível usar
. para se referir ao diretório de trabalho atual, mas o campo não pode ser omitido
nem deixado em branco. Para mais instruções sobre como usar module_path, consulte
Criar e testar aplicativos Go.
A configuração de build a seguir define o campo goModules para fazer upload do
módulo em example.com/myapp para o repositório do Artifact Registry
quickstart-go-repo:
YAML
artifacts:
goModules:
- repositoryName: 'quickstart-go-repo'
repositoryLocation: 'us-central1'
repositoryProjectId: 'argo-local-myname'
sourcePath: '/workspace/myapp'
modulePath: 'example.com/myapp'
moduleVersion: 'v1.0.0'
JSON
{
"artifacts": {
"goModules": [
{
"repositoryName": "quickstart-go-repo",
"repositoryLocation": "us-central1",
"repositoryProjectId": "argo-local-myname",
"sourcePath": "/workspace/myapp",
"modulePath": "example.com/myapp",
"moduleVersion": "v1.0.0"
}
]
}
}
mavenArtifacts
O campo mavenArtifacts permite fazer upload de artefatos Java que não são de contêiner para repositórios do Maven no Artifact Registry. Para mais informações, consulte
Criar e testar aplicativos Java.
Exemplo: fazer upload de todos os arquivos do Maven em uma pasta para um repositório do Artifact Registry
A configuração de build a seguir define o campo mavenArtifacts para fazer upload de todos os arquivos na pasta /workspace/target/com/mycompany/app/my-app-1/1.0.0/ para o repositório do Artifact Registry https://us-central1-maven.pkg.dev/my-project-id/my-java-repo:
YAML
artifacts:
mavenArtifacts:
- repository: 'https://us-central1-maven.pkg.dev/my-project-id/my-java-repo'
deployFolder: '/workspace/target'
artifactId: 'my-app-1'
groupId: 'com.mycompany.app'
version: '1.0.0'
JSON
{
"artifacts": {
"mavenArtifacts": [
{
"repository": "https://us-central1-maven.pkg.dev/my-project-id/my-java-repo",
"deployFolder": "/workspace/target",
"artifactId": "my-app-1",
"groupId": "com.mycompany.app",
"version": "1.0.0"
}
]
}
}
Para implantar os arquivos do Maven no /workspace/target/com/mycompany/app/my-app-1/1.0.0/, adicione a opção -DaltDeploymentRepository=local::default::file:./workspace/target ao comando de implantação do Maven.
Exemplo: fazer upload de um arquivo Maven empacotado para um repositório do Artifact Registry
A configuração de build a seguir define o campo mavenArtifacts para fazer upload do arquivo empacotado my-app-1.0-SNAPSHOT.jar para o repositório do Artifact Registry https://us-central1-maven.pkg.dev/my-project-id/my-java-repo:
YAML
artifacts:
mavenArtifacts:
- repository: 'https://us-central1-maven.pkg.dev/my-project-id/my-java-repo'
path: '/workspace/my-app/target/my-app-1.0-SNAPSHOT.jar'
artifactId: 'my-app-1'
groupId: 'com.mycompany.app'
version: '1.0.0'
JSON
{
"artifacts": {
"mavenArtifacts": [
{
"repository": "https://us-central1-maven.pkg.dev/my-project-id/my-java-repo",
"path": "/workspace/my-app/target/my-app-1.0-SNAPSHOT.jar",
"artifactId": "my-app-1",
"groupId": "com.mycompany.app",
"version": "1.0.0"
}
]
}
}
pythonPackages
O campo pythonPackages permite fazer upload de pacotes Python para o Artifact Registry.
Para mais informações, consulte
Criar e testar aplicativos Python.
A configuração de build a seguir define o campo pythonPackages para fazer upload do pacote Python dist/my-pkg.whl para o repositório do Artifact Registry https://us-east1-python.pkg.dev/my-project/my-repo:
YAML
artifacts:
pythonPackages:
- repository: 'https://us-east1-python.pkg.dev/my-project/my-repo'
paths: ['dist/my-pkg.whl']
JSON
{
"artifacts": {
"pythonPackages": [
{
"repository": "https://us-east1-python.pkg.dev/my-project/my-repo",
"paths": ["dist/my-pkg.whl"]
}
]
}
}
npmPackages
Use o campo npmPackages para configurar o Cloud Build para fazer upload dos
pacotes npm criados para repositórios compatíveis no Artifact Registry. É preciso
fornecer valores para repository e packagePath.
O campo repository especifica o repositório do Artifact Registry para armazenar seus
pacotes. O campo packagePath especifica o diretório local que contém
o pacote npm para upload. Esse diretório precisa conter um arquivo package.json.
Recomendamos usar um caminho absoluto para o valor de packagePath. É possível usar
. para se referir ao diretório de trabalho atual, mas o campo não pode ser omitido
nem deixado em branco. Para mais instruções sobre como usar npmPackages, consulte Criar e testar aplicativos Node.js.
A configuração de build a seguir define o campo npmPackages para fazer upload do pacote npm no diretório /workspace/my-pkg para o repositório https://us-east1-npm.pkg.dev/my-project/my-repo do Artifact Registry.
YAML
artifacts:
npmPackages:
- repository: 'https://us-east1-npm.pkg.dev/my-project/my-repo'
packagePath: '/workspace/my-pkg'
JSON
{
"artifacts": {
"npmPackages": [
{
"repository": "https://us-east1-npm.pkg.dev/my-project/my-repo",
"packagePath": "/workspace/my-pkg"
}
]
}
}
oci
Use o campo oci para configurar o Cloud Build para fazer upload das suas
imagens OCI para repositórios
compatíveis no Artifact Registry. É preciso fornecer valores para file e
registryPath.
O campo registryPath especifica o repositório do Artifact Registry para armazenar suas
imagens. O campo file especifica o diretório local que contém
a imagem OCI para upload. Esse diretório precisa conter um arquivo de imagem OCI.
Recomendamos usar um caminho absoluto para o valor de file. É possível usar
. para se referir ao diretório de trabalho atual, mas o campo não pode ser omitido
nem deixado em branco.
A configuração de build a seguir define o campo oci para fazer upload da imagem OCI no diretório /.pack/layout-repo/my-app para o repositório do Artifact Registry https://us-east1-docker.pkg.dev/my-project/my-repo.
YAML
artifacts:
oci:
- file: '/.pack/layout-repo/my-app'
registryPath: 'https://us-east1-docker.pkg.dev/my-project/my-repo'
tags: ["primary_image"]
JSON
{
"artifacts": {
"oci": [
{
"file": "/.pack/layout-repo/my-app",
"registryPath": "https://us-east1-docker.pkg.dev/my-project/my-repo",
"tags": ["primary_image"]
}
]
}
}
genericArtifacts
Use o campo genericArtifacts para fazer upload de arquivos com tipos não especificados
como um novo pacote em um
repositório genérico no
Artifact Registry.
Essa configuração é útil se você quiser fazer upload de arquivos genéricos, como arquivos de texto ou binários, ou se quiser fazer upload de um pacote que não seja um tipo de repositório compatível com o Artifact Registry.
O campo folder especifica a pasta que contém os arquivos a serem
enviados para o repositório genérico. O campo registryPath é o endereço do
repositório genérico do Artifact Registry que recebe os arquivos da sua
pasta.
A configuração de build a seguir define o campo genericArtifacts para fazer upload da
pasta /workspace/binaryOut para o repositório genérico
projects/my-project/locations/us-east1/repositories/my-repo/packages/my-pkg/versions/my-version do Artifact Registry.
YAML
artifacts:
genericArtifacts:
- folder: '/workspace/binaryOut'
registryPath: 'projects/my-project/locations/us-east1/repositories/my-repo/packages/my-pkg/versions/my-version'
JSON
{
"artifacts": {
"genericArtifacts": [
{
"folder": "/workspace/binaryOut",
"registryPath": "projects/my-project/locations/us-east1/repositories/my-repo/packages/my-pkg/versions/my-version"
}
]
}
}
É possível configurar um artefato genérico como uma dependência de build para que o Cloud Build faça o download da dependência antes do início do build. Para mais informações, consulte Especificar um artefato genérico como uma dependência.
Como usar Dockerfiles
Se você estiver executando builds do Docker no Cloud Build usando a
CLI gcloud ou
gatilhos de build, use um
Dockerfile
sem um arquivo de configuração de build separado. Se você quiser fazer mais ajustes nos
builds do Docker, forneça um arquivo de configuração de build além do
Dockerfile. Para instruções sobre como criar uma imagem Docker usando um
Dockerfile, consulte Guia de início rápido: criar.
Rede do Cloud Build
Quando o Cloud Build executa cada etapa de build, ele anexa o contêiner
da etapa a uma rede local do Docker denominada cloudbuild. A rede cloudbuild
hospeda o Application Default Credentials
(ADC) que os serviços do Google Cloud podem usar para encontrar suas
credenciais automaticamente. Se você estiver executando contêineres do Docker aninhados e quiser expor o ADC a um contêiner subjacente ou usar gcloud em uma etapa docker, use a flag --network na etapa build do Docker:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '--network=cloudbuild', '.']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"--network=cloudbuild",
"."
]
}
]
}
A seguir
- Saiba como criar um arquivo de configuração da versão básico para configurar versões para o Cloud Build.
- Para ver instruções sobre como executar criações no Cloud Build, leia Como iniciar uma criação manualmente.