借助 Cloud Build,您可以创建触发器以从托管在 Bitbucket 数据中心的代码库构建,从而执行构建以响应各种事件,例如与 Bitbucket 数据中心代码库关联的提交推送或拉取请求。
本页面介绍如何在 Bitbucket 数据中心实例上启用触发器功能。
准备工作
-
Enable the Cloud Build, Secret Manager, and Compute Engine APIs.
- 按照说明连接 Bitbucket 数据中心主机。
- 按照说明关联 Bitbucket 数据中心代码库。
创建 Bitbucket 数据中心触发器
本部分介绍如何将您的 Bitbucket 数据中心代码库关联到 Cloud Build,以及如何创建触发器以自动在关联的代码库上调用构建。如果要在专用网络中使用 Bitbucket 数据中心触发器,请参阅在专用网络中从 Bitbucket 数据中心构建代码库,了解更多说明。
控制台
如需使用 Google Cloud 控制台创建 Bitbucket 数据中心触发器,请执行以下操作:
打开触发器页面
从页面顶部选择您的项目,然后点击打开。
点击创建触发器。
输入以下触发器设置:
名称:触发器的名称。
区域:为触发器选择区域。
- 如果您选择 global(全球)作为区域,Cloud Build 将使用默认池来运行您的 build。
- 如果您选择非全球区域,并且与触发器关联的 build 配置文件指定了专用池,Cloud Build 将使用该专用池运行 build。在这种情况下,您在触发器中指定的区域必须与您创建专用池的区域一致。
- 如果您选择非全球区域,并且与触发器关联的构建配置文件未指定专用池,Cloud Build 会使用默认池在与触发器相同的区域中运行您的构建。
说明(可选):触发器的说明。
事件:选择用于调用触发器的代码库事件。
推送到分支:设置触发器,以便基于对特定分支的提交启动构建。
推送新标记:将触发器设置为以基于包含特定标记的提交启动构建。
拉取请求:设置触发器,以便基于针对拉取请求进行的提交启动构建。
来源:选择第 1 代作为来源。
代码库:从可用代码库列表中,选择一个代码库。如需关联新的代码库,请参阅关联到 Bitbucket 数据中心代码库。
分支或标记:指定要匹配分支或标记值的正则表达式。
评论控制:如果您选择了拉取请求作为事件,请选择以下选项之一来控制构建是否将由触发器自动执行:
必需(所有者和协作者除外):代码库所有者或协作者创建或更新拉取请求后,触发器会自动执行构建。如果外部贡献者发起操作,则只有在所有者或协作者对拉取请求中的
/gcbrun
添加注释之后,触发器才会执行构建。必需:任何贡献者创建或更新拉取请求后,只有在所有者或协作者对拉取请求中的
/gcbrun
添加注释之后,触发器才会执行构建。每次对拉取请求进行更改时,系统都会执行构建。不需要:任何贡献者创建或更新拉取请求后,触发器将自动执行构建。
配置:选择位于您的代码库中的构建配置文件,或在触发器上以内嵌方式配置构建。
类型:选择要用于构建的配置类型。
- Cloud Build 配置文件(yaml 或 json):为您的配置使用构建配置文件。
- Dockerfile:为您的配置使用
Dockerfile
。
位置:为您的配置指定位置。
代码库:如果您的配置文件位于代码库中,请提供构建配置文件的位置或
Dockerfile
目录,并为生成的映像提供名称。如果您的配置是Dockerfile
,则还可以选择提供构建的超时时间。提供了Dockerfile
和映像名称后,您会看到构建将执行的docker build
命令的预览。内嵌:如果您选择了 Cloud Build 配置文件(yaml 或 json)作为配置选项,则可以指定内嵌构建配置。点击打开编辑器,使用 YAML 或 JSON 语法在 Google Cloud 控制台中编写您的构建配置文件。点击完成以保存您的构建配置。
点击创建以创建 Bitbucket 数据中心触发器。
gcloud
如需使用 gcloud
命令创建 Bitbucket 数据中心触发器,您需要在终端中运行以下 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 数据中心项目的密钥。
- REPO_SLUG 是您的 Bitbucket 数据中心代码库的 slug。
- PROJECT_NUMBER 是您的Google Cloud 项目的项目编号。
- REGION 是与您的 Bitbucket 数据中心配置关联的区域。
- ID 是您的 BitbucketServerConfig 的 ID。
- 如果您要设置您的触发器来构建特定分支,则 BRANCH_NAME 是与您的分支匹配的正则表达式。
- 如果您要设置您的触发器来构建特定标记,则 TAG_NAME 是与您的标记匹配的正则表达式。
- BUILD_CONFIG 是构建配置文件的路径。
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"
}
}
其中:
- REPO_SLUG 是您的 Bitbucket 数据中心代码库的 slug。
- PROJECT_KEY 是您的 Bitbucket 数据中心项目的密钥。
- 如果您要设置您的触发器来构建特定分支,则 BRANCH_NAME 是与您的分支匹配的正则表达式。
- 如果您要设置您的触发器来构建特定标记,则 TAG_NAME 是与您的标记匹配的正则表达式。
- PROJECT_NUMBER 是您的Google Cloud 项目的项目编号。
- REGION 是与您的 Bitbucket 数据中心配置关联的区域。
- ID 是您的 BitbucketServerConfig 的 ID。
在终端中输入以下 curl
命令,其中 PROJECT_ID 是您的 Google Cloud 项目 ID:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/triggers -d @trigger.json
数据共享
从 Cloud Build 发送到 Bitbucket 数据中心的数据有助于您按名称识别触发器,并在 Bitbucket 数据中心代码库中查看构建结果。
Cloud Build 和 Bitbucket 数据中心主机之间会共享以下数据:
- Google Cloud 项目 ID
- 触发器名称
系统会自动为 Bitbucket 数据中心启用数据共享功能。
后续步骤
- 了解如何创建和管理构建触发器。
- 了解如何在专用网络中从 Bitbucket 数据中心构建代码库。
- 了解如何在 Compute Engine 上执行蓝绿部署。