管理发布

Cloud Deploy 的发布包括多个阶段。阶段是有序的逻辑 对发布中要执行的作业进行分组。

每个阶段都包含作业,作业是指在每个阶段要执行的操作( 例如 deployverify)。每个作业可以有零个或多个作业运行。 作业运行是作业的一个实例。如果作业未运行,则不会运行任何作业。

本文档介绍了阶段作业作业运行,以及如何管理它们。

发布的结构

发布作业是一种 Cloud Deploy 资源,用于将版本目标相关联。

阶段

一次发布包含一个或多个阶段

对于标准部署策略, 只有一个阶段:stable

对于Canary部署策略 每个配置的百分比都有一个单独的阶段。例如,如果您 然后配置一个部署 25%、50% 和 100% 的 Canary,那么就会有三个 阶段:

  • canary-25
  • canary-50
  • stable

这些阶段名称是标准名称:canary-[PERCENTAGE] 用于 Canary 阶段, stable 表示 100% 阶段。但是,如果您将 手动自定义 Canary 版, 控制阶段名称。

作业和作业运行

每个发布阶段都包含一个或多个作业。

对于标准部署中的发布 策略,未启用部署验证,因此只有一个阶段 (stable).

对于 Canary 发布,Canary 阶段的 (例如 canary-25canary-50stable),对于每个阶段,都有一个 deploy 作业。如果启用了验证,则每个作业也有一个 verify 作业 阶段。

作业运行是作业的一个实例。例如,针对 deploy 作业运行的作业是 如果成功,就不会再为该作业运行其他作业。如果 失败,可以在另一次作业运行时重试。

首次跳过阶段

一些部署策略(例如 Canary 版)会在 新旧版本。如果您是首次部署到目标 因为没有旧版本,所以我们无法分配流量。

因此,当您首次部署 Canary 版时,我们会跳过 Canary 版 并运行 stable 阶段。之后,应用 而未来的 Canary 部署将包含 Canary 阶段。

在实际情况中,您通常需要执行 Canary 部署 您的应用已在运行,因此很少会跳过此阶段。

一次发布版本中的状态

发布、阶段、作业和作业运行都有状态。本部分介绍了 状态。

发布状态

发布将处于以下状态之一:

  • APPROVAL_REJECTED

    发布需要批准, 但此审批已被拒绝

  • CANCELLED

    已被以下用户取消的发布的发布的终止状态: 用户。

  • CANCELLING

    用户已取消发布,但尚未完成取消操作 处理。

  • HALTED

    并行部署中,如果一个或多个子级 发布失败,但至少有一个子级发布成功, 控制器发布 如果当前阶段之后还有更多阶段,则状态为“已暂停”。

    您可以通过执行以下任一操作来恢复已暂停的控制器发布:

    • 取消控制器发布

    • 重试或忽略子发布时任何失败的作业

  • IN_PROGRESS

    正在处理作业运行。

  • FAILED

    作业失败,并且用户未选择忽略失败

  • PENDING

    发布尚未开始处理。此状态转换为 IN_PROGRESSCANCELED

  • PENDING_APPROVAL

    发布需要批准, 但尚未获得批准。

  • PENDING_RELEASE

    发布正在等待版本呈现

  • SUCCEEDED

    发布已完成,未出现任何故障。

阶段状态

阶段将具有下列状态之一:

  • PENDING

    此阶段正在等待发布中的另一个阶段完成。

  • IN_PROGRESS

    此阶段已开始。

  • SUCCEEDED

    此阶段已成功完成。

  • FAILED

    该阶段中的作业失败,并且用户未选择 忽略失败

  • ABORTED

    之前的阶段失败。

  • SKIPPED

    当您运行部署策略(例如 canary、Cloud Deploy 如果还没有正在运行的版本,则跳至 stable 阶段 用于分配流量的应用的名称在此例中,状态为 设为 SKIPPED

作业状态

作业将处于以下状态之一:

  • ABORTED

    如果某个阶段失败,后续阶段将被取消。

    如果某个作业失败,并且该失败未被忽略,则后续 作业被中止。例如,如果某个阶段包括部署作业和验证 作业失败,则验证作业将被取消。

  • DISABLED

    阶段中的某些作业可能已停用。例如,阶段始终包含 无论验证是否 。如果启用验证,则验证作业会设置为 DISABLED

  • FAILED

    此作业的作业运行失败,并且用户未选择 忽略失败

    用户选择终止此作业的作业运行

  • IGNORED

    此作业的作业运行失败,用户选择了 忽略失败

  • IN_PROGRESS

    此作业的运行作业目前正在运行。

  • PENDING

    此作业运行的作业正在等待开始,因为其他阶段或作业 没有结束。

  • SKIPPED

    当您运行部署策略(例如 canary、Cloud Deploy 如果还没有正在运行的版本,则跳至 stable 阶段 用于分配流量的应用的名称在此例中,状态为 针对跳过的阶段中的作业设置为 SKIPPED

  • SUCCEEDED

    作业运行成功完成,此阶段中的下一项作业已启动, 或者下一阶段已经开始或准备开始(可能是待处理用户 输入),或者发布已完成。

作业运行状态

  • FAILED

    作业在执行期间运行失败。

  • IN_PROGRESS

    作业运行已开始,但尚未结束。

  • TERMINATED

    用户终止了作业运行

  • TERMINATING

    用户终止了作业运行,但作业尚未完成终止。

  • SUCCEEDED

    当作业运行成功完成,而不会失败或被 就会进入 SUCCEEDED 状态,

管理发布

您可以使用 Google Cloud 控制台或 Google Cloud SDK, 运行以下代码:

如果您将并行部署 Canary 部署策略搭配使用, 请参阅此文档

推进发布

对于配置为使用“standard”之外的部署策略的目标您 需要逐步推进发布流程。

例如,如果您将目标配置为执行简单的 Canary 部署, 只有 50% 和 stable (100%) 阶段,则需要推进发布 一次,从 canary-50 阶段到 stable (100%) 阶段。

gcloud

gcloud deploy rollouts advance ROLLOUT_NAME \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --region=REGION

其中:

ROLLOUT_NAME 是当前发布的名称 您将进入下一阶段

RELEASE_NAME 是 部署项目。

PIPELINE_NAME 是用于管理此版本部署的交付流水线的名称。

REGION 是区域 版本,例如 us-central1。这是必填项。

请参阅 Google Cloud SDK 参考文档,详细了解 gcloud deploy rollouts advance 命令

控制台

  1. 打开“交付流水线”页面

  2. 点击交付流水线列表中显示的流水线。

    交付流水线详情页面显示交付流水线进展的图形表示。

  3. 发布标签页的交付流水线详情下,点击 发布的名称

    系统会显示该发布的发布详情页面。

    Google Cloud 控制台中的发布详情

    请注意,在此示例中,发布包含 canary-50 阶段和 stable 阶段。您的发布可能有多个阶段 阶段。

  4. 点击推进发布

    发布将推进到下一阶段。

取消发布

您可以取消任何尚未完成的发布。您也可以取消失败的 发布,以防止对其采取进一步操作(例如忽略或重试)。发布 必须处于以下状态之一:

  • FAILED
  • HALTED
  • IN_PROGRESS
  • PENDING
  • PENDING_APPROVAL
  • PENDING_RELEASE

取消发布后,该发布将处于 CANCELLING 状态,直到 未完成的作业运行。您可以终止 未完成的作业运行。发布成功后 CANCELLED,无法再进行高级或修改。

如需取消发布,请执行以下操作:

gcloud

gcloud deploy rollouts cancel ROLLOUT_NAME \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --region=REGION

其中:

ROLLOUT_NAME 是当前发布的名称 您将进入下一阶段

RELEASE_NAME 是 部署项目。

PIPELINE_NAME 是用于管理此版本部署的交付流水线的名称。

REGION 是区域 版本,例如 us-central1。这是必填项。

请参阅 Google Cloud SDK 参考文档,详细了解 gcloud deploy rollouts cancel 命令

控制台

  1. 打开“交付流水线”页面

  2. 点击交付流水线列表中显示的流水线。

    交付流水线详情页面显示交付流水线进展的图形表示。

  3. 发布标签页的交付流水线详情下,点击 发布的名称

    系统会显示该发布的发布详情页面。

    Google Cloud 控制台中的发布详情

    请注意,在此示例中,发布包含 canary-50 阶段和 stable 阶段。您的发布可能有多个阶段 阶段。

  4. 点击取消发布

    已取消发布。

终止作业运行

您可以结束当前正在运行的作业。您可能需要执行这一操作 例如,如果作业运行时间过长或 符合预期。作业运行必须为 IN_PROGRESS 才能终止。

gcloud

gcloud deploy job-runs terminate JOB_RUN_ID \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --rollout=ROLLOUT_NAME \
                               --region=REGION

其中:

JOB_RUN_ID 是您要终止的作业运行的 UUID。您可以在 Google Cloud 控制台中找到作业运行 ID, 在发布页面上执行以下操作:

Google Cloud 控制台的发布详情中的作业运行 ID

您还可以使用 gcloud deploy rollouts describe 命令获取作业运行 ID。

RELEASE_NAME 是 所属的项目。

PIPELINE_NAME 是用于管理此版本部署的交付流水线的名称。

ROLLOUT_NAME 是此作业的发布名称 其他项目。

REGION 是区域 版本,例如 us-central1。这是必填项。

请参阅 Google Cloud SDK 参考文档,详细了解 gcloud deploy job-runs terminate 命令

控制台

  1. 打开“交付流水线”页面

  2. 点击交付流水线列表中显示的流水线。

    “交付流水线详细信息”页面以图形方式显示了 交付流水线的进展情况

  3. 发布标签页的交付流水线详情下,点击 发布的名称

    系统会显示该发布的发布详情页面。

    Google Cloud 控制台中的发布详情

    请注意,在此示例中,发布包含 canary-50 阶段和 stable 阶段。您的发布可能有多个阶段 阶段。

  4. 阶段下,点击包含您要终止的作业的相应阶段。

  5. 作业运行下,选择要终止的特定作业运行,然后 点击终止

    作业运行会终止以及作业状态,如阶段中所示 为 Failure

终止作业运行后,该作业会被视为失败,您可以 以下项:

  • 保持原样并忽略失败的发布
  • 重试作业
  • 忽略作业并继续执行下一个作业或 发布

忽略任务

您可以忽略失败的作业,并立即移至阶段中的下一个作业。 该作业可能因任何原因(包括您或其他人)失败 已终止了为该作业运行的作业。

失败的作业意味着失败的阶段和失败的发布。但是,如果您忽略 阶段和发布都可以继续进行,并最终 有 SUCCEEDED 个状态。

gcloud

gcloud deploy rollouts ignore-job ROLLOUT_NAME \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --job-id=JOB_ID \
                               --phase-id=PHASE_ID \
                               --region=REGION

其中:

ROLLOUT_NAME 是此作业的发布名称 其他项目。

RELEASE_NAME 是当前版本的名称 包含此作业的权限。

PIPELINE_NAME 是用于管理此版本部署的交付流水线的名称。

JOB_ID 是要忽略的作业的名称,对于 示例 DEPLOY。您可以在阶段表中找到作业名称, 在 Google Cloud 控制台中完成部署:

Google Cloud 控制台中的阶段表,包含失败的作业运行

PHASE_ID 是包含 您忽视的工作。

REGION 是区域 版本,例如 us-central1

请参阅 Google Cloud SDK 参考文档,详细了解 gcloud deploy rollouts ignore-job 命令

控制台

  1. 打开“交付流水线”页面

  2. 点击交付流水线列表中显示的流水线。

    “交付流水线详细信息”页面以图形方式显示了 交付流水线的进展情况

  3. 发布标签页的交付流水线详情下,点击 发布的名称

    系统会显示该发布的发布详情页面。

  4. 选择要忽略的失败作业。

  5. 点击忽略失败按钮。

    系统会忽略失败的作业运行,并将继续发布,如同该作业一样 成功了也就是说,如果同一阶段还有其他作业, 。否则,此发布将可以推进到下一个 阶段。

Google Cloud 控制台中已失败的作业,可以忽略

重试失败的作业

您可以重试失败的作业运行。作业可能会因以下任一情况而失败 原因:

  • 作业运行未能完成。

    例如,权限不足。

  • 用户终止了该作业的作业运行

    终止作业运行会导致作业失败,您可以重试。

  • 验证测试失败。

    对于验证作业,验证测试 已失败。即使验证作业已正确完成,您的某个 验证测试失败,我们会将其传回验证作业。 在这种情况下,在调试失败的测试时,您需要重试作业 测试您的应用

如需重试失败的作业,请执行以下操作:

gcloud

gcloud deploy rollouts retry-job JOB_NAME \
                       --release=RELEASE_NAME \
                       --delivery-pipeline=PIPELINE_NAME \
                       --rollout=ROLLOUT_NAME \
                       --phase=PHASE_ID \
                       --region=REGION

其中:

JOB_NAME 是您要执行的 正在重试。例如,如果您在验证作业失败后重试验证作业, 则为 verify

RELEASE_NAME 是 所属的项目。

PIPELINE_NAME 是用于管理此版本部署的交付流水线的名称。

ROLLOUT_NAME 是此作业的发布名称 其他项目。

PHASE_ID 是此作业所在阶段的名称 部分。例如,canary-50stable

REGION 是区域 版本,例如 us-central1。这是必填项。

请参阅 Google Cloud SDK 参考文档,详细了解 gcloud deploy rollouts retry-job 命令

控制台

  1. 打开“交付流水线”页面

  2. 点击交付流水线列表中显示的流水线。

    “交付流水线详细信息”页面以图形方式显示了 交付流水线的进展情况

  3. 发布标签页的交付流水线详情下,点击 发布的名称

    系统会显示该发布的发布详情页面。

  4. 阶段和作业下,点击包含您要完成的作业的阶段 正在重试。

  5. 选择要重试的作业。

  6. 点击重试并确认。

    Google Cloud 控制台中的发布详情

    系统会再次执行作业运行,并且作业状态(如阶段表中所示)为“进行中”。如果同一文件中还有其他作业 阶段,就会执行它们。否则,发布可能会推进到 下一个阶段。

后续步骤