Como criar um arquivo de configuração da versão básico

Nesta página, descrevemos como criar um arquivo de configuração da versão que seja possível usar para iniciar uma versão no Cloud Build.

Um arquivo de configuração da versão define os campos necessários para o Cloud Build executar suas tarefas. Você precisará de um arquivo de configuração da versão se estiver iniciando versões usando a ferramenta de linha de comando gcloud ou acionadores da versão. É possível gravar o arquivo de configuração da versão usando a sintaxe YAML ou JSON.

Antes de começar

Como criar uma configuração da versão

Confira nas etapas a seguir como criar um arquivo de configuração de compilação simples. Cada um dos campos no arquivo de configuração define uma parte da tarefa que você quer executar. O único campo obrigatório no arquivo de configuração da compilação é o campo name de uma etapa. Todos os outros são opcionais.

YAML

  1. Crie o arquivo de configuração da versão. No diretório raiz do seu projeto, crie um arquivo chamado cloudbuild.yaml. Esse é seu arquivo de configuração da versão do Cloud Build.

  2. Adicione o campo "steps". A seção steps no arquivo de configuração da versão contém as etapas de versão que você quer que o Cloud Build execute.

    steps:
    
  3. Adicione a primeira etapa. Em steps:, adicione um campo name e aponte-o para uma imagem de contêiner para executar sua tarefa. O Cloud Build e a comunidade de desenvolvedores dele fornecem várias imagens de contêiner com ferramentas e linguagens comuns instaladas. É possível usar qualquer uma dessas imagens (também conhecidas como criadores de nuvem) ou qualquer imagem publicamente disponível em uma etapa de versão. Para ver informações sobre diferentes tipos de imagens de contêiner que pode ser usado em uma etapa de versão, consulte Criadores de nuvem.

    O snippet a seguir mostra uma etapa de versão com um criador do docker gcr.io/cloud-builders/docker, uma imagem de contêiner que executa o Docker.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
    
  4. Adicione os argumentos da etapa. O campo args de uma etapa transmite uma lista de argumentos ao criador referenciado pelo campo name.

    O exemplo a seguir usa os argumentos para chamar o comando docker build e os transmite para o criador docker. Os argumentos incluem:

    • o nome do comando (build)
    • a tag do Docker (t)
    • o nome da imagem a ser criada (gcr.io/my-project/my-image)
    • a localização do código-fonte (., que significa que o código-fonte está presente no diretório de trabalho atual)

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      
  5. Inclua todos os outros campos para a etapa. É possível adicionar mais campos à sua etapa de versão, como variáveis de ambiente e diretórios de trabalho, para configurar suas etapas de versão. Para ver uma descrição de todos os campos que você pode incluir em uma etapa da versão, consulte Etapas de versão.

    No exemplo a seguir, o campo timeout é incluído para especificar que a etapa docker precisa expirar após 500 segundos:

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      timeout: 500s
    
  6. Adicione mais etapas. É possível adicionar um número ilimitado de etapas de versão ao seu arquivo de configuração da versão ao incluir mais campos name e apontá-los para os criadores de nuvem.

    O snippet a seguir inclui mais duas etapas no arquivo de configuração da versão:

    • Uma etapa de versão do Docker para invocar o comando docker push, a fim de enviar a versão da imagem da etapa anterior ao Container Registry.
    • Uma etapa de versão do kubectl para invocar o comando kubectl set image, que implanta a imagem em um cluster do Kubernetes Engine. O campo env está incluído para especificar a zona do Compute Engine e o cluster do Kubernetes Engine.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
        timeout: 500s
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/my-project/my-image']
      - name: 'gcr.io/cloud-builders/kubectl'
        args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
        - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
      
  7. Inclua configuração adicional da versão. É possível configurar ainda mais a versão ao incluir campos como machineType e tags. Para ver a lista completa de campos que você pode incluir no arquivo de configuração da versão, consulte Visão geral da configuração da versão.

    O exemplo a seguir adiciona estes campos à versão:

    • machineType especifica o tamanho da máquina virtual para executar a compilação.
    • timeout especifica o tempo após o qual a compilação será expirada.
    • tags é usado para anotar a compilação.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
        timeout: 500s
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/my-project/my-image']
      - name: 'gcr.io/cloud-builders/kubectl'
        args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
        - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
      options:
          machineType: 'N1_HIGHCPU_8'
      timeout: 660s
      tags: ['mytag1', 'mytag2']
      
  8. Armazene as imagens e os artefatos criados. Se a versão produzir imagens de contêiner, será possível armazená-las no Container Registry. Para fazer isso, use o campo images.

    O exemplo a seguir armazena a imagem criada na etapa do Docker no Container Registry:

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      timeout: 500s
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'gcr.io/my-project/my-image']
    - name: 'gcr.io/cloud-builders/kubectl'
      args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
      env:
      - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
      - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
    options:
        machineType: 'N1_HIGHCPU_8'
    timeout: 660s
    tags: ['mytag1', 'mytag2']
    images: ['gcr.io/my-project/myimage']
    

    Se a versão produzir artefatos que não sejam contêineres, será possível armazená-los no Cloud Storage usando o campo artifacts. Para ver instruções sobre como fazer isso, consulte Como armazenar imagens e artefatos.

JSON

  1. Crie o arquivo de configuração da versão. No diretório raiz do seu projeto, crie um arquivo chamado cloudbuild.json. Esse é seu arquivo de configuração da versão do Cloud Build.

  2. Adicione o campo "steps". A seção steps no arquivo de configuração contém as etapas de versão que você quer que o Cloud Build execute.

    {
        "steps:" [
        {
        }
        ]
    }
    
  3. Adicione a primeira etapa. Em "steps:", adicione um campo de nome e aponte-o para uma imagem de contêiner para executar sua tarefa. O Cloud Build e a comunidade de desenvolvedores dele fornecem várias imagens de contêiner com ferramentas e linguagens comuns instaladas. É possível usar qualquer uma dessas imagens (também conhecidas como criadores de nuvem) ou qualquer imagem publicamente disponível em uma etapa de versão. Para ver informações sobre diferentes tipos de imagens de contêiner que pode ser usado em uma etapa de versão, consulte Criadores de nuvem.

    O snippet a seguir mostra uma etapa de versão com um criador do Docker gcr.io/cloud-builders/docker, uma imagem de contêiner que executa o Docker.

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker"
        }
        ]
    }
    
  4. Adicione os argumentos da etapa. O campo args de uma etapa transmite uma lista de argumentos ao criador referenciado pelo campo name.

    O exemplo a seguir usa os argumentos para chamar o comando docker build e os transmite para o criador docker. Os argumentos incluem os seguintes:

    • o nome do comando (build)
    • a tag do Docker (t)
    • o nome da imagem a ser criada (gcr.io/my-project/my-image)
    • a localização do código-fonte (., que significa que o código-fonte está presente no diretório de trabalho atual)

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ]
          }
          ]
      }
      
  5. Inclua todos os outros campos para a etapa. É possível adicionar mais campos à sua etapa de versão, como variáveis de ambiente e diretórios de trabalho, para configurar suas etapas de versão. Para ver uma descrição de todos os campos que você pode incluir em uma etapa da versão, consulte Etapas de versão.

    No exemplo a seguir, o campo timeout é incluído para especificar que a etapa docker precisa expirar após 500 segundos:

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/my-project/my-image",
                "."
            ],
            "timeout": "500s"
        }
        ]
    }
    
  6. Adicione mais etapas. É possível adicionar um número ilimitado de etapas de versão ao seu arquivo de configuração da versão ao incluir mais campos de nome e apontá-los para os criadores de nuvem.

    O snippet a seguir inclui mais duas etapas no arquivo de configuração da versão:

    • Uma etapa de versão do Docker para invocar o comando docker push, a fim de enviar a versão da imagem da etapa anterior ao Container Registry.
    • Uma etapa de versão do kubectl para invocar o comando kubectl set image, que implanta a imagem em um cluster do Kubernetes Engine. O campo env está incluído para especificar a zona do Compute Engine e o cluster do Kubernetes Engine.

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ],
              "timeout": "500s"
          },
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "push",
                  "gcr.io/my-project/my-image",
              ],
          },
          {
              "name": "gcr.io/cloud-builders/kubectl",
              "args": [
                  "set",
                  "image",
                  "deployment/my-deployment",
                  "my-container=gcr.io/my-project/my-image"
              ],
              "env": [
                  "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                  "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
              ]
          }
          ]
      }
      
  7. Inclua configuração adicional da versão. É possível configurar ainda mais a versão ao incluir campos como machineType e tags. Para ver a lista completa de campos que você pode incluir no arquivo de configuração da versão, consulte Visão geral da configuração da versão.

    O exemplo a seguir adiciona estes campos à versão:

    • machineType especifica o tamanho da máquina virtual para executar a compilação.
    • timeout especifica o tempo após o qual a compilação será expirada.
    • tags é usado para anotar a compilação.

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ],
              "timeout": "500s"
          },
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "push",
                  "gcr.io/my-project/my-image",
              ],
          },
          {
              "name": "gcr.io/cloud-builders/kubectl",
              "args": [
                  "set",
                  "image",
                  "deployment/my-deployment",
                  "my-container=gcr.io/my-project/my-image"
              ],
              "env": [
                  "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                  "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
              ]
          }
          ],
          "options": {
              "machineType": "N1_HIGHCPU_8"
          },
          "timeout": "660s",
          "tags": [
              "mytag1",
              "mytag2"
          ]
      }
      
  8. Armazene as imagens e os artefatos criados. Se a versão produzir imagens de contêiner, será possível armazená-las no Container Registry. Para fazer isso, use o campo images.

    O exemplo a seguir armazena a imagem criada na etapa do Docker no Container Registry:

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/my-project/my-image",
                "."
            ],
            "timeout": "500s"
        },
        {
                "name": "gcr.io/cloud-builders/docker",
                "args": [
                    "push",
                    "gcr.io/my-project/my-image",
                ],
        },
        {
            "name": "gcr.io/cloud-builders/kubectl",
            "args": [
                "set",
                "image",
                "deployment/my-deployment",
                "my-container=gcr.io/my-project/my-image"
            ],
            "env": [
                "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
            ]
        }
        ],
        "options": {
            "machineType": "N1_HIGHCPU_8"
        },
        "timeout": "660s",
        "tags": [
            "mytag1",
            "mytag2"
        ],
        "images": [
            "gcr.io/my-project/myimage"
        ]
    }
    

    Se a versão produzir artefatos que não sejam contêineres, será possível armazená-los no Cloud Storage usando o campo artifacts. Para ver instruções sobre como fazer isso, consulte Como armazenar imagens e artefatos.

A seguir

Enviar comentários sobre…