从 Bitbucket 数据中心构建代码库

借助 Cloud Build,您可以创建触发器以从托管在 Bitbucket 数据中心的代码库构建。您可以执行构建来响应与 Bitbucket 数据中心代码库关联的提交推送或合并请求等事件。

本页介绍了如何为 Bitbucket 数据中心实例启用构建触发器。如需了解详情,请参阅 Cloud Build 触发器Cloud Build 代码库

准备工作

  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

如需为 Bitbucket 数据中心代码库创建触发器,您必须在 Google Cloud 和代码库之间建立连接。如需通过 Google Cloud中的 Bitbucket 数据中心应用创建关联,请参阅连接到 Bitbucket 数据中心代码库

创建 Bitbucket 数据中心触发器

本部分介绍如何将您的 Bitbucket 数据中心代码库关联到 Cloud Build,以及如何创建触发器以自动在关联的代码库上调用构建。如果要在专用网络中使用 Bitbucket 数据中心触发器,请参阅在专用网络中从 Bitbucket 数据中心构建代码库,了解更多说明。

Google Cloud 控制台

如需使用 Google Cloud 控制台创建 Bitbucket 数据中心触发器,请执行以下操作:

  1. 在 Google Cloud 控制台中打开触发器页面。

    打开“触发器”页面

  2. 选择您的 Google Cloud 项目,然后点击打开

  3. 点击创建触发器

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

    • 名称:输入触发器的名称。

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

      • 如果与触发器关联的 build 配置文件指定了专用池,则 Cloud Build 会使用该专用池运行 build。在这种情况下,您在触发器中指定的区域必须与您创建专用池的区域一致。
      • 如果与触发器关联的构建配置文件指定专用池,则 Cloud Build 会使用默认池在与触发器相同的区域中运行您的 build。

    • 说明(可选):输入触发器的说明。

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

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

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

      • 拉取请求:设置触发器,以便基于针对拉取请求进行的提交启动构建。

    • 来源:配置 Bitbucket 数据中心代码库的相关信息:

      • 代码库服务:选择 Cloud Build 代码库。

      • 代码库生成:选择 Developer Connect 作为来源。

      • 代码库:从可用代码库列表中,选择代码库。

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

      • 评论控制:如果您选择了拉取请求作为事件,请选择以下选项之一来控制构建是否将由触发器自动执行:

        • 必需(所有者和协作者除外):代码库所有者或协作者创建或更新拉取请求后,触发器会自动执行构建。如果外部贡献者发起操作,则只有在所有者或协作者对拉取请求中的 /gcbrun 添加注释之后,触发器才会执行构建。

        • 必需:任何贡献者创建或更新拉取请求后,只有在所有者或协作者对拉取请求中的 /gcbrun 添加注释之后,触发器才会执行构建。每次对拉取请求进行更改时,系统都会执行构建。

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

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

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

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

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

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

  5. 点击创建以创建 Bitbucket Cloud 触发器。

gcloud CLI

如需使用 gcloud 命令创建 Bitbucket 数据中心触发器,请运行以下命令:

    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

其中:

  • TRIGGER_NAME 是触发器的名称。
  • PROJECT_ID 是您的 Google Cloud 项目 ID。
  • REGION 是触发器的区域
  • CONNECTION_NAME 是您的 Bitbucket 数据中心连接的名称。
  • GIT_REPOSITORY_LINK 是指向您的 Git 代码库的链接。
  • BRANCH_PATTERN 是代码库中要在其上调用构建的分支名称。
  • TAG_PATTERN 是代码库中要在其上调用构建的标记名称。
  • BUILD_CONFIG_FILE 是构建配置文件的路径。
  • SERVICE-ACCOUNT 是用于触发器和构建操作的服务账号。

API

如需使用 API 创建 Bitbucket 数据中心触发器,请使用以下 JSON 模板:

{
    "filename": "cloudbuild.yaml",
    "name": "curl-trigger",
    "description": "curl trigger",
    "bitbucket_server_trigger_config": {
        "repo_slug": "REPO_SLUG",
        "project_key": "PROJECT_KEY",
        "push": {
            "branch": "BRANCH_NAME" # "tag": "TAG_NAME"
        },
        "bitbucket_server_config_resource": "projects/PROJECT_NUMBER/locations/REGION/bitbucketServerConfigs/ID"
        "comment_control": "COMMENT_SETTING"
    }
}

其中:

  • REPO_SLUG 是您的 Bitbucket Server 代码库的 slug。如需了解详情,请参阅 Bitbucket 的代码库 Slug 指南
  • PROJECT_KEY 是 Bitbucket Server 项目的密钥。PROJECT_KEY 区分大小写。
  • 如果您要设置您的触发器来构建特定分支,则 BRANCH_NAME 是您的分支的正则表达式。
  • 如果您要设置您的触发器来构建特定标记,则 TAG_NAME 是您的标记的正则表达式。
  • PROJECT_NUMBER 是您的 Cloud 项目的项目编号。
  • REGION 是与您的 Bitbucket Server 配置关联的区域
  • ID 是您的 BitbucketServerConfig 的 ID。
  • COMMENT_SETTING 是用于控制构建触发器是否需要在备注中包含 /gcbrun 才能运行 build 的设置。如需了解详情,请参阅 commentControl

在终端中输入以下 curl 命令:

  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

其中:

  • PROJECT_NUMBER 是您的 Google Cloud 项目编号。
  • PROJECT_ID 是您的 Google Cloud 项目 ID。

数据共享

从 Cloud Build 发送到 Bitbucket 数据中心的数据有助于您按名称识别触发器,并在 Bitbucket 数据中心代码库中查看构建结果。

Cloud Build 和 Bitbucket 数据中心主机之间会共享以下数据:

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

系统会自动为 Bitbucket 数据中心启用数据共享功能。

后续步骤