重試階段中失敗的動作 - AWS CodePipeline

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

重試階段中失敗的動作

您可以重試失敗的階段,而不必從頭開始再次執行管線。您可以在階段中重試失敗的動作,或重試階段中的所有動作,從階段中的第一個動作開始。當您重試階段中的失敗動作時,所有仍在進行中的動作會繼續運作,而失敗的動作會再次觸發。當您從階段中的第一個動作重試失敗的階段時,階段不會有任何正在進行中的動作。在可以重試階段之前,它必須讓所有動作都失敗,或是某些動作失敗且某些動作成功。

重要

重試失敗的階段會從階段中的第一個動作重試階段中的所有動作,重試失敗的動作會重試階段中所有失敗的動作。這會覆寫相同執行中先前成功動作的輸出成品。

雖然可能會覆寫人工因素,但仍會保留先前成功動作的執行歷程記錄。

如果您使用主控台來檢視管線,則可重試階段按鈕或重試失敗動作按鈕會出現在可重試的階段上。

如果您使用 AWS CLI,可以使用get-pipeline-state命令來判斷是否有任何動作失敗。

注意

在下列情況下,您可能無法重試階段:

  • 階段中的所有動作都成功,因此階段不會處於失敗狀態。

  • 階段失敗後,整體配管結構已變更。

  • 階段中的另一個重試正在處理中。

重試失敗的動作 (主控台)

在階段-主控台中重試失敗的階段或失敗的動作
  1. 請登入AWS Management Console並開啟 CodePipeline 主控台,網址為 http://console.aws.amazon.com/codesuite/codepipeline/home

    所有與您的 AWS 帳戶相關的管道名稱都會顯示。

  2. Name (名稱) 中,選擇管道的名稱。

  3. 找出具有失敗動作的階段,然後選擇下列其中一項:

    • 若要重試階段中的所有動作,請選擇「重試階段」。

    • 若要僅重試階段中失敗的動作,請選擇「重試失敗的動作」

    
                具有 CodeCommit 來源階段和 CodeDeploy 部署階段失敗的範例管線

    若階段中所有重試動作皆已成功完成,管道將持續執行。

重試失敗的動作 (CLI)

若要在階段中重試失敗的階段或失敗的動作-CLI

若要使用重AWS CLI試所有動作或所有失敗的動作,請使用下列參數執行retry-stage-execution命令:

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

您可以使用的值retry-modeFAILED_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