通过 GitLab 构建代码库

借助 Cloud Build,您可以创建触发器以便通过在 GitLab 上托管的代码库进行构建,从而执行构建以响应与 GitLab 代码库关联的提交推送或合并请求等事件。

本页面介绍了如何在 GitLab 实例上启用触发器功能。详细了解 Cloud Build 触发器Cloud Build 代码库

准备工作

  • 启用 Cloud Build and Secret Manager API。

    启用 API

创建 GitLab 触发器

控制台

如需使用 Google Cloud 控制台创建 GitLab 触发器,请执行以下操作:

  1. 打开触发器页面

    打开“触发器”页面

  2. 在页面顶部选择您的 Google Cloud 项目,然后点击打开

  3. 点击创建触发器

  4. 输入以下触发器设置:

    • 名称:触发器的名称。

    • 区域:为触发器选择区域

      • 如果与触发器关联的构建配置文件指定了专用池,则 Cloud Build 会使用专用池来运行构建。在这种情况下,您在触发器中指定的区域必须与创建专用池的区域一致。
      • 如果与触发器关联的构建配置文件指定专用池,则 Cloud Build 会使用默认池在触发器所在的区域中运行构建。
    • 说明(可选):触发器的说明。

    • 事件:选择用于调用触发器的代码库事件。

      • 推送到分支:设置触发器,以便基于对特定分支的提交启动构建。

      • 推送新标记:将触发器设置为以基于包含特定标记的提交启动构建。

      • 拉取请求(不支持 Cloud Source Repositories):将触发器设置为基于对合并请求的提交启动构建。

    • 来源:选择第 2 代作为来源。

      • 代码库:从可用代码库列表中,选择所需的代码库。如需连接新的代码库,请参阅连接到 GitLab 代码库

      • 分支标记:指定要匹配分支或标记值的正则表达式。如需了解可接受的正则表达式语法,请参阅 RE2 语法

      • 注释控制:如果您选择 Pull request 作为事件,请选择以下选项之一,以控制触发器是否自动执行构建:

        • 必需(所有者和协作者除外):当代码库所有者或协作者创建或更新合并请求时,触发器将自动执行构建。如果操作是由外部贡献者发起,则只有在所有者或协作者对合并请求添加 /gcbrun 注释后,系统才会执行构建。

        • 必需:当任何贡献者创建或更新合并请求时,只有在所有者或协作者对合并请求评论 /gcbrun 后,系统才会执行构建。每次更改合并请求后,系统都会执行构建。

        • 不需要:当任何贡献者创建或更新合并请求时,触发器会自动执行构建。

    • 配置:选择位于您的代码库中的构建配置文件,或在触发器上以内嵌方式配置构建。

    • 类型:选择要用于构建的配置类型。

      • Cloud Build 配置文件(yaml 或 json):为您的配置使用构建配置文件。
      • Dockerfile:为您的配置使用 Dockerfile
    • 位置:为您的配置指定位置。

      • 代码库:如果您的配置文件位于代码库中,请提供构建配置文件Dockerfile 目录的位置以及所生成的映像的名称。如果您的配置是 Dockerfile,则还可以选择提供构建的超时时间。提供了 Dockerfile 和映像名称后,您会看到构建将执行的 docker build 命令的预览。

      • 内嵌:如果您选择了 Cloud Build 配置文件(yaml 或 json)作为配置选项,则可以指定内嵌构建配置。点击打开编辑器,使用 YAML 或 JSON 语法在 Google Cloud 控制台中编写构建配置文件。点击完成以保存您的构建配置。

  5. 点击创建以创建 GitLab 触发器。

gcloud

如需使用 gcloud 命令创建 GitLab 触发器,请运行以下命令:

gcloud builds triggers create gitlab \
  --name=TRIGGER_NAME \
  --repository=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME \
  --branch-pattern=BRANCH_PATTERN # or --tag-pattern=TAG_PATTERN \
  --build-config=BUILD_CONFIG_FILE \
  --region=REGION

其中:

  • TRIGGER_NAME 是触发器的名称。
  • PROJECT_ID 是您的 Google Cloud 项目 ID。
  • REGION 是触发器的区域
  • CONNECTION_NAME 是您的 GitLab 连接的名称。
  • REPO_NAME 是代码库的名称
  • BRANCH_PATTERN 是代码库中要在其上调用构建的分支名称。
  • TAG_PATTERN 是代码库中要在其上调用构建的标记名称。
  • BUILD_CONFIG_FILE 是构建配置文件的路径。

数据共享

从 Cloud Build 发送到 GitLab 的数据可帮助您按名称识别触发器,并查看 GitLab 代码库中的构建结果。

目前,Cloud Build 和 GitLab 主机之间共享以下数据:

  • Google Cloud 项目 ID
  • 触发器名称

后续步骤