您可以使用 Cloud Build 触发器自动启动构建并从 Git 代码库部署工作流。您可以将触发器配置为在源代码库发生任何更改时部署工作流,也可以仅在更改符合特定条件时部署工作流。
这种方法有助于您管理部署生命周期。例如,您可以在预演环境中部署对工作流的更改,针对该环境运行测试,然后逐步将这些更改发布到生产环境。
准备工作
这些说明假定您在 Google Cloud 项目中拥有 Cloud Build Editor 角色 (roles/cloudbuild.builds.editor
),以便您可以创建触发器。您还需要在 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 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。授予 Service Account User 角色 针对 Compute Engine 默认服务执行的 (
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 触发器页面:
如有必要,选择您的项目,然后点击 Open。
从区域列表中,选择要创建触发器的区域。
点击连接代码库。
选择您已在其中存储源代码的源代码库。
例如: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
替代变量。代表分支的名称
字符。
借助 $_WORKFLOW_NAME
替换变量,您可以使用不同的变量值重复使用配置文件。您可以在创建
构建触发器。
如需了解详情,请参阅创建构建配置文件。
创建构建触发器
您可以通过创建 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 会提供总体状态, 和每个构建步骤如需了解详情,请参阅 查看构建结果。
如需确认是否已部署预演工作流,请在 Google Cloud 控制台中执行以下操作: 转到工作流页面:
您应该会看到一个名为
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。
- 了解如何排查构建错误。
- 了解如何排查工作流问题。