每个版本的流水线实例数

当您调用 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 会提示您确认您确实要回滚。在这种情况下,我们强烈建议您在回滚之前检查对交付流水线或目标的更改。

您可以采取的措施

如果您在创建版本后更改了交付流水线或其任何目标,可以执行以下操作:

  • 让原始流水线继续执行,而不应用修改后的流水线中的任何更改。

    流水线中的更改不会影响其余版本。

  • 创建新版本。

    新版本将使用经过修改的新交付流水线,并从交付流水线流程中的第一个目标重新开始。