当您调用 Cloud Deploy 以创建要由交付流水线管理的新版本时,流水线和目标将会对该版本保留其当前状态。您仍然可以修改交付流水线和目标定义文件,但所做的更改仅影响未来的版本。
Cloud Deploy 为何这样做?
为了确保版本可靠且耐用,交付流水线及其关联资源会在创建版本时保留。此保留可以避免最近对交付流水线定义所做的更改影响版本,导致生成的清单无法适应。
这一点为什么非常重要?
如果创建版本后交付流水线发生了更改,Cloud Deploy 会根据之前的流水线定义(即在版本创建时的定义)而不是新定义提供版本。除非您或组织中的其他人期望该版本遵循更新后的流水线行为,否则不会出现这种行为。
这一点什么时候很重要?
当您提升
release
时第一次创建版本时,Cloud Deploy 会截取流水线的快照。该快照(流水线实例)是控制该
release
的部署周期的流水线版本。如果任何人修改流水线,然后您将版本提升到下一个目标,则 Cloud Deploy 会显示一条警告,通知您部署可能无法按预期运行。您可以通过确认或取消提升来做出响应。
gcloud deploy releases promote… The pipeline or targets were cached when the release was created, but the source has changed since then. You should review the differences before proceeding. Promoting release xxxx-release-00n to target xxx. Do you want to continue (Y/n)?
如果确认要继续,则版本将提升到预期的目标集群,并且根据在创建 release
时的定义配置了该目标。也就是说,对目标的更改不会影响该 release
。
当您批准
rollout
时与升级一样,如果您批准
rollout
,并且与版本关联的流水线实例与当前流水线定义之间不匹配,则 Cloud Deploy 会显示一条消息,告知您不匹配。您可以确认或取消批准。当您回滚
release
时。如果交付流水线或目标在
rollout
后发生更改,并且您尝试回滚,则会出现流水线不匹配。Cloud Deploy 会提示您确认您确实要回滚。在这种情况下,我们强烈建议您在回滚之前检查对交付流水线或目标的更改。
您可以采取的措施
如果您在创建版本后更改了交付流水线或其任何目标,可以执行以下操作:
让原始流水线继续执行,而不应用修改后的流水线中的任何更改。
流水线中的更改不会影响其余版本。
创建新版本。
新版本将使用经过修改的新交付流水线,并从交付流水线流程中的第一个目标重新开始。