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. O A comunidade de desenvolvedores do Cloud Build oferece serviços builders que você pode usar para executar suas 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 realizar exigir recursos que não são fornecidos pelo uma imagem pública, um builder compatível ou criado pela comunidade; é possível criar sua própria imagem e usá-la em uma etapa de build.

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.

Seu builder personalizado pode enviar por push ou pull de um repositório em Container Registry (hospedado em gcr.io/$PROJECT-NAME/) à qual sua conta de serviço de 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