本页介绍了如何将现有 Cloud Deploy 版本提升到交付流水线进展中的下一个目标。
准备工作
本页面假定您已创建版本。
提升版本
将版本部署到交付流水线中定义的目标时,您可以将其提升到下一个目标:
gcloud
gcloud deploy releases promote --release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION
其中:
RELEASE_NAME
是您要提升的版本的名称。
PIPELINE_NAME
是用于管理此版本部署的交付流水线的名称。
REGION
是创建版本所在区域的名称,例如 us-central1
。这是必填项。
如需详细了解 gcloud deploy releases promote
命令,请参阅 Google Cloud SDK 参考文档。
控制台
点击交付流水线列表中显示的流水线。
交付流水线详情页面显示交付流水线进展的图形表示。
在交付流水线直观显示中的第一个目标上,点击提升。
此时将显示提升版本对话框。它会显示您要提升到的目标的详细信息。
点击升级。
如果在创建版本后更改了交付流水线或目标,则 Cloud Deploy 会返回一条消息,指示可能不匹配,并提示您确认提升。您可以对该提示响应 n
,并检查流水线版本之间的差异,然后再继续。如果您选择仍然提升,则将根据创建版本时定义的交付流水线的部署版本。如需详细了解流水线不匹配,请参阅每个版本的流水线实例。
Cloud Deploy 会为进入目的地目标的版本创建 rollout
,并将该版本排入队列以进行部署。部署版本后后,交付流水线直观显示会显示以下事实:
管理交付流水线的批准
您可以要求任何目标获得批准,也可以批准或拒绝发布到该目标的版本。
可通过使用 Pub/Sub 和 Cloud Deploy API,将工作流管理系统(例如 ServiceNow)或其他系统与 Cloud Deploy 集成,来以编程方式管理批准。
需要获得批准
如需要求批准任何目标,请在目标配置中将 requireApproval
设置为 true
:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name:
description:
requireApproval: true
如需了解更多详情,请参阅交付流水线配置。
当发布处于待批准状态时,订阅 clouddeploy-approvals
Pub/Sub 主题的用户或系统会收到通知,然后可以批准或拒绝发布。
使用并行部署时,您可以将多目标配置为需要审批。如果将应用提升到目标平台遭拒,控制器发布将失败,状态为 APPROVAL_REJECTED
,并且系统不会创建子发布。
批准或拒绝发布
每个目标都需要批准才能部署到任何版本。提升到需要批准的目标时,Cloud Deploy 会向 clouddeploy-approvals
主题发布 Pub/Sub 消息。
具有 roles/clouddeploy.approver
角色的任何用户或服务账号都可以批准 Cloud Deploy 发布到需要批准的目标。
您的集成式工作流管理系统(使用服务通知收到需要批准的通知)可以使用 Cloud Deploy API 来批准或拒绝发布。
手动批准或拒绝
控制台
在 Google Cloud 控制台中,前往 Cloud Deploy 交付流水线页面,查看可用交付流水线的列表。
Google Cloud 控制台中会显示交付流水线列表。未显示已配置但未向 Cloud Deploy 服务注册的交付流水线。
点击交付流水线的名称。
显示流水线直观显示效果。如果批准处于待处理状态,并且您具有
roles/clouddeploy.approver
角色或等效权限,则直观显示包含审核链接。点击审核。
此时会显示待批准的发布列表。
点击审核。
此时会显示“批准发布”屏幕。
清单差异标签页显示从当前部署的版本(如有)到您现在正要批准(或拒绝)的版本的已渲染清单的所有更改。
点击批准或拒绝。
如果您批准,您的应用将部署到目标中。如果您拒绝,则不会部署应用,并且除非重新提升,否则无法获得批准。
gcloud
具有 roles/clouddeploy.approver
角色的用户可以手动批准或拒绝发布。如需批准,请执行以下操作:
gcloud deploy rollouts approve rollout-name --delivery-pipeline=pipeline-name \
--region=region \
--release=release-name
如需拒绝,请执行以下操作:
gcloud deploy rollouts reject rollout-name --delivery-pipeline=pipeline-name \
--region=region \
--release=release-name