Crie um ficheiro de configuração de compilação

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

  1. 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.

  2. 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:
    
  3. Adicione o primeiro passo. Em steps:, adicione um campo name 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 builder gcr.io/cloud-builders/docker, que é uma imagem de contentor que executa o Docker.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
    
  4. Adicione argumentos de passos. O campo args de um passo recebe uma lista de argumentos e transmite-os ao criador referenciado pelo campo name. Se o criador no campo name tiver um ponto de entrada, os args na lista são usados para aceder a esse ponto de entrada. Se o criador no campo name não tiver um ponto de entrada, o primeiro elemento em args é 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', '.']
      
  5. 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 campo env é 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'
      
  6. Inclua campos de configuração de compilação adicionais. Pode configurar a criação de forma mais detalhada incluindo campos como machineType, tags ou timeout. 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:

    steps:
      # Docker Build
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage', 
               '.']
    
      # Docker Push
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage']
    
      # Entrypoint, timeout and environment variables
      - 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'

    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

  1. 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.

  2. 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":
    }
    
  3. Adicione o primeiro passo. Em steps:, adicione um campo name 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 builder gcr.io/cloud-builders/docker, que é uma imagem de contentor que executa o Docker.

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker"
          }
       ]
    }
    
  4. Adicione argumentos de passos. O campo args de um passo recebe uma lista de argumentos e transmite-os ao criador referenciado pelo campo name. Se o criador no campo name tiver um ponto de entrada, os args na lista são usados para aceder a esse ponto de entrada. Se o criador no campo name não tiver um ponto de entrada, o primeiro elemento em args é 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",
                  "."
               ]
            }
         ]
      }
      
  5. 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 campo env é 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"
               ]
            }
      
  6. Inclua campos de configuração de compilação adicionais. Pode configurar a criação de forma mais detalhada incluindo campos como machineType, tags ou timeout. 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:

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
                "build",
                "-t",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage",
                "."
             ]
          },
          {
             "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",
             "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"
             ]
          }
       ]
    }
    

    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?