您可以使用 Cloud Build 触发器从 Git 代码库自动启动构建和部署工作流。您可以将触发器配置为针对源代码库的任何更改部署工作流,或者仅在更改符合特定条件时才部署工作流。
此方法可以帮助您管理部署生命周期。例如,您可以在预演环境中部署对工作流的更改,针对该环境运行测试,然后将这些更改逐步发布到生产环境。
准备工作
以下说明假定您在 Google Cloud 项目中拥有 Cloud Build Editor 角色 (roles/cloudbuild.builds.editor
),因此可以创建触发器。此外,您还需要像 GitHub 或 Bitbucket 等源代码库中工作流。
控制台
启用 Cloud Build API 和 Workflows API。
向 Cloud Build 服务帐号授予 Workflows Admin 角色 (
roles/workflows.admin
):在 Google Cloud 控制台中,转到 IAM 页面。
选择您的项目。
在 Cloud Build 服务帐号 (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
) 对应的行中,点击 修改主帐号。点击
添加其他角色。在角色列表中,选择 Workflows Admin 角色。
点击保存。
将 Compute Engine 默认服务帐号上的 Service Account User 角色 (
roles/iam.serviceAccountUser
) 授予 Cloud Build 服务帐号。启用 Compute Engine API 后,Compute Engine 默认服务帐号为PROJECT_NUMBER-compute@developer.gserviceaccount.com
。在 Google Cloud 控制台中,转到服务账号页面。
选择您的项目。
点击 Compute Engine 默认服务帐号 (
PROJECT_NUMBER-compute@developer.gserviceaccount.com
) 的电子邮件地址。点击权限标签页。
点击
授予访问权限按钮。如需添加新的主账号,请输入您的服务帐号 (
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
) 的电子邮件地址。在选择角色列表中,依次选择服务帐号 > Service Account User 角色。
点击保存。
gcloud
启用 Cloud Build API 和 Workflows API。
gcloud services enable cloudbuild.googleapis.com \ workflows.googleapis.com
向 Cloud Build 服务帐号授予 Workflows Admin 角色 (
roles/workflows.admin
):PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format='value(projectNumber)') gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/workflows.admin
将
PROJECT_ID
替换为您的 Google Cloud 项目的 ID。将 Compute Engine 默认服务帐号上的 Service Account User 角色 (
roles/iam.serviceAccountUser
) 授予 Cloud Build 服务帐号。启用 Compute Engine API 后,Compute Engine 默认服务帐号为PROJECT_NUMBER-compute@developer.gserviceaccount.com
。gcloud iam service-accounts add-iam-policy-binding \ $PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
连接到您的源代码库
您必须将 Cloud Build 连接到源代码库,以便 Cloud Build 可以自动进行构建以响应代码库中发生的事件。
如需连接到 GitHub 或 Bitbucket,请完成以下步骤:
在 Google Cloud 控制台中,转到 Cloud Build 触发器页面:
如有必要,请选择您的项目并点击打开。
从区域列表中,选择要创建触发器的区域。
点击连接代码库。
选择存储源代码的源代码库。
例如:GitHub(Cloud Build GitHub 应用)
点击继续。
使用您的用户名和密码向您的源代码库进行身份验证。
如果您要登录 GitHub,系统会要求您授权 Google Cloud Build GitHub 应用访问您的 GitHub 帐号,以便继续操作。
从可用代码库列表中,选择所需的代码库,然后点击确定。
对于 GitHub 和 Bitbucket 等外部代码库,您必须拥有正在处理的 Google Cloud 项目的所有者级别权限。
阅读免责声明,并选中旁边的复选框,以表示您同意这些条款。
点击连接。
如需继续创建构建触发器,以便为代码库中的源代码自动进行构建,请点击创建触发器。否则,请点击完成。
创建 Cloud Build 配置文件
build 配置文件定义使用构建触发器启动构建时所需的字段。在项目根目录中创建配置文件,并使用 YAML 或 JSON 编写该文件。
例如,以下配置文件会部署并运行测试工作流,然后使用脚本检查输出。如果测试通过,则部署工作流:
从 Git 代码库触发构建时,Cloud Build 会填充 $BRANCH_NAME
和 $SHORT_SHA
替代变量。它们分别表示分支的名称,以及与您的 build 关联的提交 ID 的前七位字符。
$_WORKFLOW_NAME
替代变量允许您重复使用具有不同变量值的配置文件。您可以在创建构建触发器时指定其值。
如需了解详情,请参阅创建构建配置文件。
创建构建触发器
您可以通过创建 Cloud Build 触发器来自动部署工作流。
如需在上一部分中为配置文件创建构建触发器,请执行以下操作:
在 Google Cloud 控制台中,转到 Cloud Build 触发器页面:
点击创建触发器。
在名称字段中,为触发器输入名称。
对于事件,请选择要调用触发器的事件。
例如:推送到分支
在来源部分,选择您的代码库,以及将启动触发器的分支或标记名称。您可以使用正则表达式来指定与分支或标记的匹配。
例如:
GoogleCloudPlatform/workflows-demos
(仓库)和^main$|^staging$
(与main
和staging
分支匹配)展开显示包含的文件和忽略的文件过滤条件部分,将工作流指定为包含的文件,以便在发生更改时调用 build。
例如:
gitops/workflow.yaml
对于配置,选择 Cloud Build 配置文件(YAML 或 JSON)作为类型,选择代码库作为位置。
在 Cloud Build 配置文件位置字段中,指定文件的位置。
例如:
gitops/cloudbuild.yaml
(可选)如需添加替代变量,请点击添加变量,然后指定键和值的组合。
例如:
_WORKFLOW_NAME
(变量)和workflows-gitops
(值)如需保存构建触发器,请点击创建。
当将任何更改推送到 Git 代码库的指定分支中的工作流时,它会自动触发 Cloud Build 部署工作流。
如需了解详情,请参阅创建和管理构建触发器。
测试构建触发器
您可以测试前面部分中的构建触发器和配置文件。
在 Git 代码库的
staging
分支中,修改workflow.yaml
,并将Hello World
更改为Bye World
:提交更改并将其推送到
staging
分支。git add workflow.yaml git commit -m "Update workflow.yaml in staging" git push
Cloud Build 触发器运行并启动构建。
如需确认构建成功,请在 Google Cloud 控制台中前往构建记录页面:
构建完成后,Cloud Build 会提供构建以及每个构建步骤的总体状态。如需了解详情,请参阅查看构建结果。
如需确认已部署预演工作流,请在 Google Cloud 控制台中转到工作流页面:
您应该会看到其中列出了一个名为
workflows-gitops-staging
的工作流。如需将预演工作流部署到生产环境,请将
staging
分支合并到main
分支:git checkout main git merge staging git push
请注意,由于
test-main.sh
需要工作流输出Hello World
,因此构建将失败:为了成功部署生产工作流,请在
staging
分支中再次修改workflow.yaml
并将字符串改回Hello World
。提交更改并将其推送到
staging
分支,然后将staging
分支合并到main
分支。如需确认生产工作流已部署,请在 Google Cloud 控制台中转到工作流页面:
您应该会看到其中列出了一个名为
workflows-gitops-main
的工作流。
后续步骤
- 详细了解 Cloud Build。
- 了解如何排查构建错误。
- 了解如何排查 Workflows 问题。