Como usar builders de contribuições da comunidade e builders personalizados

Nesta página, explicamos como usar builders de contribuições da comunidade e builders personalizados no Cloud Build. A comunidade de desenvolvedores do Cloud Build fornece builders de código aberto que podem ser usados para executar tarefas. Se a tarefa que você quer executar requer recursos que não são fornecidos por uma imagem existente, você pode criar sua própria imagem personalizada e usá-la em uma etapa de versão. Para saber mais sobre os diferentes tipos de builders, consulte Cloud Builders.

Se você não estiver familiarizado com o Cloud Build, leia as guias de início rápido e a visão geral da configuração da compilação primeiro.

Como usar builders de contribuições da comunidade

Imagens pré-criadas não estão disponíveis para builders de contribuições da comunidade. Para usar esses builders em um arquivo de configuração do Cloud Build, primeiro é preciso criar a imagem e enviá-la para o Container Registry no projeto.

Para usar um builder de contribuições da comunidade:

  1. Crie e envie o builder:

    1. Navegue até o diretório raiz do projeto.

    2. Clone o repositório cloud-builders-community:

      git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
      
    3. Navegue até a imagem do builder que você quer usar, em que builder-name é o diretório que contém o builder:

      cd cloud-builders-community/builder-name
      
    4. Envie o builder para seu projeto:

      gcloud builds submit .
      
    5. Volte para o diretório raiz do projeto:

      cd ../..
      
    6. Remova o repositório do diretório raiz:

      rm -rf cloud-builders-community/
      
  2. No arquivo de configuração do Cloud Build, use o builder em uma etapa de versão:

    YAML

    steps:
    - name: 'gcr.io/project-id/builder-name'
      args: ['arg1', 'arg2', ...]
    ...
    

    JSON

    {
      "steps": [
      {
        "name": "gcr.io/project-id/builder-name",
        "args": [
          "arg1",
          "arg2",
          ...
        ]
        ...
      }
      ]
    }
    
  3. Use o arquivo de configuração da versão para iniciar a criar manualmente ou criar usando gatilhos.

Para ver exemplos sobre o uso de builders de contribuições da comunidade, consulte Implantar no Firebase e Criar imagens de VM usando o Packer.

Como criar um builder personalizado

Se a tarefa que você quer executar requer recursos que não são fornecidos por uma imagem pública, um builder compatível ou um builder de contribuições da comunidade, é possível criar sua própria imagem e usá-la em uma etapa de versão.

Alguns exemplos de quando é possível usar uma imagem de builder personalizado são:

  • Fazer o download de código-fonte ou pacotes de locais externos.
  • Usar uma cadeia de ferramentas externa.
  • Armazenar as bibliotecas necessárias em cache.
  • Pré-criar o código-fonte (com o Cloud Build responsável apenas por empacotar a versão em uma imagem).

Como qualquer outro, um builder personalizado é executado com o código-fonte ativado em /workspace e com um diretório de trabalho em /workspace. Todos os arquivos deixados em /workspace por uma determinada etapa de versão estão disponíveis para outras etapas de versão.

O builder personalizado pode enviar ou extrair de um repositório no Container Registry (hospedado em gcr.io/$PROJECT-NAME/) para que sua conta de serviço do Cloud Build tem acesso.

As etapas a seguir mostram como criar e usar um builder personalizado com um exemplo de Dockerfile:

  1. Crie uma imagem de builder personalizada:

    1. Crie o Dockerfile para o builder personalizado. O código a seguir mostra um exemplo de Dockerfile:

        FROM alpine
        RUN apk add curl
        CMD curl https://httpbin.org/ip -s > myip.txt; echo "*** My IP is: $(cat myip.txt)"
      
    2. Crie e envie o builder personalizado para o Container Registry no seu projeto, substituindo os valores de project-id e image-name:

        gcloud builds submit --tag gcr.io/project-id/image-name
      
  2. Use a imagem de builder personalizada no Cloud Build especificando o builder no campo name de uma etapa de build:

    YAML

        steps:
        - name: 'gcr.io/project-id/image-name'
          id: Determine IP of this build worker
    

    JSON

        {
          "steps": [
          {
            "name": "gcr.io/project-id/image-name",
            "id": "Determine IP of this build worker"
          }
          ]
        }
    
  3. Use o arquivo de configuração da versão para iniciar a criar manualmente ou criar usando gatilhos.

A seguir