您可以使用 Cloud Build 触发器自动启动构建并从 Git 代码库部署工作流。您可以将触发器配置为在源代码库发生任何更改时部署工作流,也可以仅在更改符合特定条件时部署工作流。
这种方法有助于您管理部署生命周期。例如,您可以在预演环境中部署对工作流的更改,针对该环境运行测试,然后逐步将这些更改发布到生产环境。
准备工作
以下说明假定您在项目中拥有 Cloud Build Editor 角色 (roles/cloudbuild.builds.editor
),以便您可以创建触发器。 Google Cloud 您还需要在 GitHub 或 Bitbucket 等源代码库中设置工作流。
控制台
启用 Cloud Build 和 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 和 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 配置文件
构建配置文件定义使用构建触发器启动构建时所需的字段。在项目根目录中创建配置文件,并使用 YAML 或 JSON 编写该文件。
例如,以下配置文件会部署和运行测试工作流,然后使用脚本检查输出。如果测试通过,系统会部署工作流:
从 Git 代码库触发构建时,Cloud Build 会填充 $BRANCH_NAME
和 $SHORT_SHA
替代变量。它们分别表示分支名称和与 build 关联的提交 ID 的前七位字符。
借助 $_WORKFLOW_NAME
替换变量,您可以使用不同的变量值重复使用配置文件。您可以在创建 build 触发器时指定其值。
如需了解详情,请参阅创建构建配置文件。
创建构建触发器
您可以通过创建 Cloud Build 触发器来自动部署工作流。
如需为上一部分中的配置文件创建构建触发器,请执行以下操作:
在 Google Cloud 控制台中,前往 Cloud Build 的触发器页面:
点击创建触发器。
在名称字段中,为触发器输入名称。
对于事件,选择用于调用触发器的事件。
例如:推送到分支
对于来源,请选择您的代码库以及用于启动触发器的分支或标记名称。您可以使用正则表达式指定要匹配的分支或标记。
例如:
GoogleCloudPlatform/workflows-demos
(代码库)和^main$|^staging$
(与main
和staging
分支匹配)展开显示包含的和忽略的文件过滤条件部分,并将您的工作流指定为包含的文件,以便在其发生更改时调用构建。
例如:
gitops/workflow.yaml
对于配置,选择 Cloud Build 配置文件(YAML 或 JSON)作为类型,并选择 Repository(代码库)作为位置。
在 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 会提供构建的整体状态以及每个构建步骤的状态。如需了解详情,请参阅查看 build 结果。
如需确认是否已部署预演工作流,请在 Google Cloud 控制台中前往 Workflows 页面:
您应该会看到名为
workflows-gitops-staging
的工作流程列出。如需将暂存工作流部署到生产环境,请将
staging
分支合并到main
分支:git checkout main git merge staging git push
请注意,由于
test-main.sh
预计工作流的输出中会包含Hello World
,因此 build 将失败:如需成功部署生产工作流,请在
staging
分支中再次修改workflow.yaml
,并将字符串改回Hello World
。将更改提交并推送到
staging
分支,然后将staging
分支合并到main
分支。如需确认已部署生产工作流,请在 Google Cloud 控制台中前往 Workflows 页面:
您应该会看到名为
workflows-gitops-main
的工作流程。
后续步骤
- 详细了解 Cloud Build。
- 了解如何排查构建错误。
- 了解如何排查工作流问题。