Crie repositórios a partir do GitLab

O Cloud Build permite-lhe criar acionadores para compilar a partir de repositórios alojados no GitLab. Pode executar compilações em resposta a eventos, como envios de commits ou pedidos de união associados ao seu repositório do GitLab.

Esta página explica como pode ativar acionadores de compilação para uma instância do GitLab. Para mais informações, consulte os Acionadores do Cloud Build e os Repositórios do Cloud Build.

Antes de começar

Siga as instruções para estabelecer ligação a um anfitrião do GitLab.
  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

Para criar um acionador para um repositório do GitLab, tem de ter uma ligação entre o Google Cloud e o seu repositório. Para criar uma associação através da app GitLab no Google Cloud, consulte o artigo Associe a um repositório do GitLab.

Crie um acionador do GitLab

Esta secção explica como pode criar um acionador e associá-lo à sua instalação do GitLab.

Google Cloud consola

Para criar acionadores do GitLab através da Google Cloud consola, faça o seguinte:

  1. Abra a página Acionadores:

    Abra a página Acionadores

  2. Selecione o seu Google Cloud projeto na parte superior da página e clique em Abrir.

  3. Clique em Criar acionador.

  4. Introduza as seguintes definições do acionador:

    • Nome: um nome para o acionador.

    • Região: selecione a região para o seu acionador.

      • Se o ficheiro de configuração de compilação associado ao acionador especificar um pool privado, o Cloud Build usa o pool privado para executar a compilação. Neste caso, a região especificada no acionador tem de corresponder à região onde criou o seu conjunto privado.
      • Se o ficheiro de configuração de compilação associado ao acionador não especificar um conjunto privado, o Cloud Build usa o conjunto predefinido para executar a compilação na mesma região que o acionador.

    • Descrição (opcional): uma descrição do acionador.

    • Evento: selecione o evento do repositório para invocar o acionador.

      • Enviar para um ramo: defina o acionador para iniciar uma compilação em commits para um ramo específico.

      • Enviar nova etiqueta: defina o acionador para iniciar uma compilação em commits que contenham uma etiqueta específica.

      • Pedido de envio: defina o acionador para iniciar uma compilação em commits para um pedido de união.

    • Origem: configure informações sobre o seu repositório do GitLab:

      • Serviço de repositório: selecione Cloud Build.

      • Geração de repositórios: selecione Developer Connect como origem.

      • Repositório: na lista de repositórios disponíveis, selecione o repositório.

      • Branch ou Tag: especifique uma expressão regular com o valor da ramificação ou da etiqueta a corresponder. Para obter informações sobre a sintaxe de expressões regulares aceitável, consulte a sintaxe RE2.

      • Controlo de comentários: se selecionou Pedido de obtenção como o seu Evento, escolha uma das seguintes opções para controlar se uma compilação é executada automaticamente pelo acionador:

        • Obrigatório, exceto para proprietários e colaboradores: quando um proprietário ou um colaborador do repositório cria ou atualiza um pedido de obtenção, as compilações são executadas automaticamente pelo acionador. Se um colaborador externo iniciar a ação, as compilações só são executadas depois de um proprietário ou um colaborador comentar /gcbrun no pedido de envio.

        • Obrigatório: quando um pedido de obtenção é criado ou atualizado por qualquer colaborador, as compilações só são executadas depois de um proprietário ou um colaborador comentar /gcbrun no pedido de obtenção. As compilações são executadas sempre que é feita uma alteração a um pedido de obtenção.

        • Não obrigatório: quando um pedido de obtenção é criado ou atualizado por qualquer colaborador, as compilações são executadas automaticamente por acionadores.

    • Configuração: selecione o ficheiro de configuração de compilação localizado no seu repositório ou configure a compilação inline no acionador.

      • Tipo: selecione o tipo de configuração a usar para a sua compilação.

        • Ficheiro de configuração do Cloud Build (YAML ou JSON): use um ficheiro de configuração de compilação para a sua configuração.
        • Dockerfile: use um Dockerfile para a sua configuração.
      • Localização: especifique a localização da configuração.

        • Repositório: se o ficheiro de configuração estiver localizado no seu repositório, indique a localização do ficheiro de configuração de compilação ou do Dockerfilediretório e um nome para a imagem resultante. Se a sua configuração for um Dockerfile, pode fornecer opcionalmente um limite de tempo para a compilação. Quando tiver indicado o Dockerfile e o nome da imagem, é apresentada uma pré-visualização do comando docker build que a compilação vai executar.

        • Inline: se selecionou Ficheiro de configuração do Cloud Build (YAML ou JSON) como opção de configuração, pode especificar a configuração de compilação inline. Clique em Abrir editor para escrever o ficheiro de configuração de compilação na Google Cloud consola com a sintaxe YAML ou JSON. Clique em Concluído para guardar a configuração de compilação.

  5. Clique em Criar para criar o acionador do GitLab Enterprise Edition.

CLI gcloud

Para criar acionadores do GitLab através de comandos gcloud, execute o seguinte comando:

    gcloud alpha builds triggers create developer connect
      --name=TRIGGER_NAME \
      --git-repository-link=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/REPO_NAME \
      --branch-pattern=BRANCH_PATTERN # or --tag-pattern=TAG_PATTERN \
      --build-config=BUILD_CONFIG_FILE \
      --region=REGION \
      --service-account=SERVICE-ACCOUNT

Onde:

  • TRIGGER_NAME é o nome do acionador.
  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • REGION é a região do seu acionador.
  • CONNECTION_NAME é o nome da sua associação do GitLab.
  • GIT_REPOSITORY_LINK é o link para o seu repositório Git.
  • BRANCH_PATTERN é o nome do ramo no seu repositório para invocar a compilação.
  • TAG_PATTERN é o nome da etiqueta no seu repositório para invocar a compilação.
  • BUILD_CONFIG_FILE é o caminho para o ficheiro de configuração de compilação.
  • SERVICE-ACCOUNT é a conta de serviço a usar para operações de acionamento e compilação.

API

Para criar um acionador do GitLab com a API, use o seguinte modelo JSON:

{
    "filename": "cloudbuild.yaml",
    "name": "curl-trigger",
    "description": "curl trigger",
    "developer_connect_config" { 
      "git_repository_link": "PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/REPO_NAME",
      "git_repository_link_type": "GITLAB",
      // Field filter must be only one of the following:
      "pullRequest": "PULL_REQUEST_FILTER",
      "push": "PUSH_FILTER"
   }
}

Onde:

  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • REGION é a região do seu acionador.
  • CONNECTION_NAME é o nome da sua associação do GitLab.
  • GIT_REPOSITORY_LINK é o link para o seu repositório Git.
  • "REPO_NAME" é o nome do seu repositório.
  • "PULL_REQUEST_FILTER" é uma instância de PullRequestFilter, que define o filtro que permite ao Cloud Build acionar uma compilação quando é feito um pedido de envio correspondente no GitLab.
  • "PUSH_FILTER" é uma instância de PushFilter, que define o filtro que permite ao Cloud Build acionar uma compilação quando é feito um push correspondente no GitLab.

Introduza o seguinte comando curl no terminal:

  curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/triggers -d @trigger.json

Onde:

  • PROJECT_NUMBER é o número do seu Google Cloud projeto.
  • PROJECT_ID é o ID do seu Google Cloud projeto.

Partilha de dados

Os dados enviados para o GitLab a partir do Cloud Build ajudam a identificar acionadores por nome e a ver os resultados da compilação nos seus repositórios do GitLab.

Os seguintes dados são partilhados entre o Cloud Build e o seu anfitrião do GitLab:

  • Google Cloud ID do projeto
  • Nome do acionador

O que se segue?