重试失败的阶段或阶段中失败的操作 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

重试失败的阶段或阶段中失败的操作

您可以重试失败的阶段,而不必从头开始再次运行管道。为此,您可以重试阶段中失败的操作,也可以从阶段中的第一个操作开始重试所有操作。当重试阶段中失败的操作时,所有仍在进行的操作都会继续运行,而失败的操作将会重新触发。当从阶段中的第一个操作开始重试失败的阶段时,该阶段中不会有任何正在进行的操作。在重试某个阶段之前,它其中的操作必须全部失败,或者有些操作失败,有些操作成功。

重要

重试失败的阶段时,会从其中第一个操作开始重试所有操作,而重试失败的操作则会重试阶段中所有失败的操作。这会覆盖同一执行中之前成功的操作的输出构件。

尽管构件可能会被覆盖,但之前成功的操作的执行历史记录仍会保留。

如果使用控制台查看管道,则可重试的阶段上将会出现重试阶段按钮或重试失败的操作按钮。

如果您使用的是 Amazon CLI,则可以使用get-pipeline-state命令来确定是否有任何操作失败。

注意

在以下情况下,您可能无法重试阶段:

  • 阶段中的所有操作都已成功,因此该阶段未处于失败状态。

  • 阶段失败后总体管道结构发生变化。

  • 阶段中的另一个重试尝试已在进行中。

重试失败的阶段(控制台)

重试失败的阶段或阶段中失败的操作(控制台)
  1. 登录 Amazon Web Services Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

    将显示与您的 Amazon 账户关联的所有管道的名称。

  2. 名称中,选择管道的名称。

  3. 找到包含失败操作的阶段,然后选择以下项之一:

    • 要重试阶段中的所有操作,请选择重试阶段

    • 要仅重试阶段中失败的操作,请选择重试失败的操作

    包含 CodeCommit 源阶段和失败 CodeDeploy 部署阶段的示例管道

    如果该阶段中所有重试的操作都已成功完成,管道将继续运行。

重试失败的阶段 (CLI)

重试失败的阶段或阶段中失败的操作 (CLI)

要使用重试所有操作或所有失败的操作,请使用以下参数运行retry-stage-execution命令: Amazon CLI

--pipeline-name <value> --stage-name <value> --pipeline-execution-id <value> --retry-mode ALL_ACTIONS/FAILED_ACTIONS
注意

您可以对 retry-mode 使用的值是 FAILED_ACTIONSALL_ACTIONS

  1. 在终端(Linux、macOS 或 Unix)或命令提示符 (Windows) 下,运行 retry-stage-execution 命令,如以下名为 MyPipeline 的管道示例中所示。

    aws codepipeline retry-stage-execution --pipeline-name MyPipeline --stage-name Deploy --pipeline-execution-id b59babff-5f34-EXAMPLE --retry-mode FAILED_ACTIONS

    输出会返回执行 ID:

    { "pipelineExecutionId": "b59babff-5f34-EXAMPLE" }
  2. 您还可以使用 JSON 输入文件运行该命令。您首先要创建一个 JSON 文件来标识管道、包含失败操作的阶段以及该阶段中的最新管道执行。然后,运行带 --cli-input-json 参数的 retry-stage-execution 命令。要检索您需要用于 JSON 文件的详细信息,最简单的方法是使用 get-pipeline-state 命令。

    1. 在终端(Linux、macOS 或 Unix)或命令提示符 (Windows) 处,对管道运行 get-pipeline-state 命令。例如,对于名为的管道 MyFirstPipeline,您可以键入类似于以下内容的内容:

      aws codepipeline get-pipeline-state --name MyFirstPipeline

      该命令的响应包括每个阶段的管道状态信息。在以下示例中,响应表示 Staging 阶段有一个或多个操作失败:

      { "updated": 1427245911.525, "created": 1427245911.525, "pipelineVersion": 1, "pipelineName": "MyFirstPipeline", "stageStates": [ { "actionStates": [...], "stageName": "Source", "latestExecution": { "pipelineExecutionId": "9811f7cb-7cf7-SUCCESS", "status": "Succeeded" } }, { "actionStates": [...], "stageName": "Staging", "latestExecution": { "pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE", "status": "Failed" } } ] }
    2. 在纯文本编辑器中,创建一个 JSON 格式文件,您需要记录以下内容:

      • 包含失败操作的管道的名称

      • 包含失败操作的阶段的名称

      • 该阶段中最新管道执行的 ID

      • 重试模式。

      对于前面的 MyFirstPipeline 示例,您的文件将如下所示:

      { "pipelineName": "MyFirstPipeline", "stageName": "Staging", "pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE", "retryMode": "FAILED_ACTIONS" }
    3. 使用类似于 retry-failed-actions.json 的名称保存文件。

    4. 调用您运行 retry-stage-execution 命令时创建的文件。例如:

      重要

      务必在文件名前包含 file://。此命令中需要该项。

      aws codepipeline retry-stage-execution --cli-input-json file://retry-failed-actions.json
    5. 要查看重试的结果,请打开 CodePipeline 控制台并选择包含失败操作的管道,或者再次使用该get-pipeline-state命令。有关更多信息,请参阅 在中查看管道和详细信息 CodePipeline