从 Bitbucket Server 构建代码库

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

本页面介绍了如何在 Bitbucket Server 实例上启用触发器功能。

准备工作

  • 启用 Cloud Build, Secret Manager, and Compute Engine API。

    启用 API

创建 Bitbucket Server 触发器

本部分介绍如何将 Bitbucket Server 代码库连接到 Cloud Build,并创建触发器以自动调用连接的代码库上的构建。如果您要在专用网络中使用 Bitbucket Server 触发器,请参阅在专用网络中通过 Bitbucket Server 构建代码库以获取进一步说明。

控制台

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

  1. 打开触发器页面

    打开“触发器”页面

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

  3. 点击创建触发器

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

    • 名称:触发器的名称。

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

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

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

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

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

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

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

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

      • 分支标记:指定要匹配分支或标记值的正则表达式。

      • 评论控制:如果您选择拉取请求作为事件,则可以选择设置来控制非评论事件是否需要额外的互动才能触发构建。选择以下选项之一,以控制触发器是否自动执行构建:

        • 必需(所有者和协作者除外):当代码库所有者或具有写入权限的用户创建或更新拉取请求时,触发器会自动执行构建。如果操作由外部贡献者发起,则只有在所有者或具有写入权限的用户对拉取请求添加 /gcbrun 注释后,系统才会执行构建。请参阅 COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY

        • 必需:如果具有写入权限的用户创建拉取请求并在拉取请求说明中包含 /gcbrun,则构建会在拉取请求创建时运行。如果任何其他贡献者创建或更新拉取请求,则只有在所有者或具有写入权限的用户评论拉取请求上的 /gcbrun 后,系统才会执行构建。请参阅 COMMENTS_ENABLED

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

        在 Bitbucket Server 中,非注释事件包括打开、修改和批准拉取请求等操作。

        评论事件(包括添加、修改和删除评论)仅在评论来自具有写入权限的用户,并且评论包含 /gcbrun 时才会触发构建。

        如需详细了解 Bitbucket Server 事件类型,请参阅有关如何管理 webhook 的 Bitbucket 文档。

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

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

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

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

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

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

gcloud

如需使用 gcloud 命令创建 Bitbucket Server 触发器,您需要在终端中运行以下 gcloud builds triggers create bitbucketserver 命令:

gcloud builds triggers create bitbucketserver
    --name=TRIGGER_NAME \
    --project-key=PROJECT_KEY \
    --repo-slug=REPO_SLUG \
    --bitbucket-server-config-resource=projects/PROJECT_NUMBER/locations/REGION/bitbucketServerConfigs/ID \
    --branch-pattern=BRANCH_NAME \ # --tag-pattern=TAG_NAME
    --build-config=BUILD_CONFIG

其中:

  • TRIGGER_NAME 是触发器的名称。
  • PROJECT_KEY 是您的 Bitbucket Server 项目的密钥。PROJECT_KEY 区分大小写。
  • REPO_SLUG 是 Bitbucket Server 代码库的 slug。如需了解详情,请参阅 Bitbucket 中关于代码库阻塞的指南
  • PROJECT_NUMBER 是您的 Cloud 项目的项目编号。
  • REGION 是与您的 Bitbucket Server 配置关联的区域
  • ID 是您的 BitbucketServerConfig 的 ID。
  • 如果要设置触发器以构建某些分支,则 BRANCH_NAME 是一个与分支匹配的正则表达式。
  • 如果您希望设置触发器来构建某些代码,则 TAG_NAME 是一个与您的标记匹配的正则表达式。
  • BUILD_CONFIG 是构建配置文件的路径。

API

如需使用 API 创建 Bitbucket Server 触发器,请使用以下 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 中关于代码库阻塞的指南
  • PROJECT_KEY 是您的 Bitbucket Server 项目的密钥。PROJECT_KEY 区分大小写。
  • 如果要设置触发器以构建某些分支,则 BRANCH_NAME 是分支的正则表达式。
  • 如果您希望设置触发器来构建某些代码,则 TAG_NAME 是代码的正则表达式。
  • PROJECT_NUMBER 是您的 Cloud 项目的项目编号。
  • REGION 是与您的 Bitbucket Server 配置关联的区域
  • ID 是您的 BitbucketServerConfig 的 ID。
  • COMMENT_SETTING 是设置,用于控制构建触发器是否需要在注释中添加 /gcbrun 才能运行构建。如需了解详情,请参阅 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 Server 的数据可帮助您按名称识别触发器,并查看 Bitbucket Server 上的构建结果。

Cloud Build 和 Bitbucket Server 之间共享以下数据:

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

系统会自动为 Bitbucket Server 启用数据共享。

后续步骤