Esta página descreve como criar um ficheiro de configuração de compilação que pode usar para iniciar uma compilação no Cloud Build.
Um ficheiro de configuração de compilação define os campos necessários para que o Cloud Build execute as suas tarefas. Precisa de um ficheiro de configuração de compilação se estiver a iniciar compilações com a ferramenta de linha de comandos gcloud
ou acionadores de compilação. Pode escrever o ficheiro de configuração de compilação com a sintaxe YAML ou JSON.
Antes de começar
Leia o artigo Vista geral da configuração de compilação para saber mais sobre os campos que pode incluir num ficheiro de configuração de compilação.
Criar uma configuração de compilação
Os passos seguintes explicam como criar um ficheiro de configuração de compilação básico. Cada um dos campos no ficheiro de configuração de compilação define uma parte da tarefa que quer realizar. O único campo obrigatório no ficheiro de configuração de compilação é o campo name
para um passo. Todos os outros campos são opcionais.
YAML
Crie o ficheiro de configuração de compilação. No diretório raiz do projeto, crie um ficheiro com o nome
cloudbuild.yaml
. Este é o ficheiro de configuração do Cloud Build.Adicione o campo de etapas. A secção
steps
no ficheiro de configuração de compilação contém os passos de compilação que quer que o Cloud Build execute.steps:
Adicione o primeiro passo. Em
steps:
, adicione um camponame
e direcione-o para uma imagem de contentor para executar a sua tarefa. O Cloud Build e a respetiva comunidade de programadores oferecem várias imagens de contentores com ferramentas e idiomas comuns instalados. Pode usar qualquer uma destas imagens (também denominadas criadores de nuvem) ou qualquer imagem disponível publicamente num passo de compilação. Para obter informações sobre os diferentes tipos de imagens de contentores que pode usar num passo de compilação, consulte os criadores do Google Cloud.O fragmento seguinte mostra um passo de compilação com um
docker
buildergcr.io/cloud-builders/docker
, que é uma imagem de contentor que executa o Docker.steps: - name: 'gcr.io/cloud-builders/docker'
Adicione argumentos de passos. O campo
args
de um passo recebe uma lista de argumentos e transmite-os ao criador referenciado pelo camponame
. Se o criador no camponame
tiver um ponto de entrada, osargs
na lista são usados para aceder a esse ponto de entrada. Se o criador no camponame
não tiver um ponto de entrada, o primeiro elemento emargs
é usado como ponto de entrada.No exemplo seguinte:
build
é o ponto de entrada para o criador do Docker na nuvem.-t
é a etiqueta Docker.us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image
é o nome da imagem a ser criada no Artifact Registry. O passo de compilação usa a substituição predefinida para o ID do projeto. Por isso, este valor é substituído automaticamente no momento da compilação..
é a localização do código-fonte, que indica que o código-fonte está no diretório de trabalho atual.steps: - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image', '.']
Adicione mais passos. Pode adicionar qualquer número de passos de compilação ao ficheiro de configuração de compilação incluindo campos
name
adicionais e direcionando-os para cloud builders.O fragmento seguinte inclui mais dois passos para o ficheiro de configuração da compilação:
- Um passo de compilação do Docker para invocar o comando
docker push
para enviar a imagem criada no passo anterior para o Artifact Registry. Um passo de compilação para o comando Google Cloud SDK com o ponto de entrada especificado, que cria uma instância do Compute Engine a partir da imagem do contentor no Artifact Registry.
gcloud
O campoenv
é incluído para especificar a zona e a região do Compute Engine.- name: 'gcr.io/cloud-builders/docker' args: ['push', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image'] - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'gcloud' args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image'] env: - 'CLOUDSDK_COMPUTE_REGION=us-central1' - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
- Um passo de compilação do Docker para invocar o comando
Inclua campos de configuração de compilação adicionais. Pode configurar a criação de forma mais detalhada incluindo campos como
machineType
,tags
outimeout
. Para ver a lista completa de campos que pode incluir no ficheiro de configuração de compilação, consulte o artigo Vista geral da configuração de compilação.No exemplo seguinte, o
gcr.io/google.com/cloudsdktool/cloud-sdk
passo de compilação excede o tempo limite após 240 segundos.- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'gcloud' timeout: 240s args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image'] env: - 'CLOUDSDK_COMPUTE_REGION=us-central1' - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
Veja o seguinte fragmento para o exemplo completo de um ficheiro de configuração de compilação básico:
No exemplo, as imagens de contentores são armazenadas no Artifact Registry. Se a sua compilação produzir artefactos que não sejam contentores, pode armazená-los no Cloud Storage através do campo
artifacts
. Para ver instruções sobre como o fazer, consulte o artigo Armazenar imagens e artefactos.
JSON
Crie o ficheiro de configuração de compilação. No diretório raiz do projeto, crie um ficheiro com o nome
cloudbuild.json
. Este é o ficheiro de configuração do Cloud Build.Adicione o campo de etapas. A secção
steps
no ficheiro de configuração de compilação contém os passos de compilação que quer que o Cloud Build execute.{ "steps": }
Adicione o primeiro passo. Em
steps:
, adicione um camponame
e direcione-o para uma imagem de contentor para executar a sua tarefa. O Cloud Build e a respetiva comunidade de programadores oferecem várias imagens de contentores com ferramentas e idiomas comuns instalados. Pode usar qualquer uma destas imagens (também denominadas criadores de nuvem) ou qualquer imagem disponível publicamente num passo de compilação. Para obter informações sobre os diferentes tipos de imagens de contentores que pode usar num passo de compilação, consulte os criadores do Google Cloud.O fragmento seguinte mostra um passo de compilação com um
docker
buildergcr.io/cloud-builders/docker
, que é uma imagem de contentor que executa o Docker.{ "steps": [ { "name": "gcr.io/cloud-builders/docker" } ] }
Adicione argumentos de passos. O campo
args
de um passo recebe uma lista de argumentos e transmite-os ao criador referenciado pelo camponame
. Se o criador no camponame
tiver um ponto de entrada, osargs
na lista são usados para aceder a esse ponto de entrada. Se o criador no camponame
não tiver um ponto de entrada, o primeiro elemento emargs
é usado como ponto de entrada.No exemplo seguinte:
build
é o ponto de entrada para o criador do Docker na nuvem.-t
é a etiqueta Docker.us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image
é o nome da imagem a ser criada no Artifact Registry. O passo de compilação usa a substituição predefinida para o ID do projeto. Por isso, este valor é substituído automaticamente no momento da compilação..
é a localização do código-fonte, que indica que o código-fonte está no diretório de trabalho atual.{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage", "." ] } ] }
Adicione mais passos. Pode adicionar qualquer número de passos de compilação ao ficheiro de configuração de compilação incluindo campos
name
adicionais e direcionando-os para cloud builders.O fragmento seguinte inclui mais dois passos para o ficheiro de configuração da compilação:
- Um passo de compilação do Docker para invocar o comando
docker push
para enviar a imagem criada no passo anterior para o Artifact Registry. Um passo de compilação para o comando Google Cloud SDK com o ponto de entrada especificado, que cria uma instância do Compute Engine a partir da imagem do contentor no Artifact Registry.
gcloud
O campoenv
é incluído para especificar a zona e a região do Compute Engine.{ "name": "gcr.io/cloud-builders/docker", "args": [ "push", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage" ] }, { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "gcloud", "args": [ "compute", "instances", "create-with-container", "my-vm-name", "--container-image", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage" ], "env": [ "CLOUDSDK_COMPUTE_REGION=us-central1", "CLOUDSDK_COMPUTE_ZONE=us-central1-a" ] }
- Um passo de compilação do Docker para invocar o comando
Inclua campos de configuração de compilação adicionais. Pode configurar a criação de forma mais detalhada incluindo campos como
machineType
,tags
outimeout
. Para ver a lista completa de campos que pode incluir no ficheiro de configuração de compilação, consulte o artigo Vista geral da configuração de compilação.No exemplo seguinte, o
gcr.io/google.com/cloudsdktool/cloud-sdk
passo de compilação excede o tempo limite após 240 segundos.{ "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "gcloud", "timeout": "240s", "args": [ "compute", "instances", "create-with-container", "my-vm-name", "--container-image", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage" ], "env": [ "CLOUDSDK_COMPUTE_REGION=us-central1", "CLOUDSDK_COMPUTE_ZONE=us-central1-a" ] }
Veja o seguinte fragmento para o exemplo completo de um ficheiro de configuração de compilação básico:
No exemplo, as imagens de contentores são armazenadas no Artifact Registry. Se a sua compilação produzir artefactos que não sejam contentores, pode armazená-los no Cloud Storage através do campo
artifacts
. Para ver instruções sobre como o fazer, consulte o artigo Armazenar imagens e artefactos.
O que se segue?
- Saiba como executar as suas compilações manualmente e usando acionadores através do ficheiro de configuração de compilação.
- Saiba como escrever configurações de compilação para incluir dependências e criar, testar e implementar artefactos.