失敗したステージまたは失敗したアクションのステージ再試行の設定 - AWS CodePipeline

失敗したステージまたは失敗したアクションのステージ再試行の設定

パイプラインを最初から再実行することなく、失敗したステージを再試行できます。そのためには、ステージ内の失敗したアクションを再試行するか、ステージ内の最初のアクションから始めてステージ内のすべてのアクションを再試行します。ステージ内の失敗したアクションを再試行する場合、進行中のすべてのアクションはそのまま動作し続け、失敗したアクションは再度トリガーされます。失敗したアクションのあるステージ内で最初のアクションから再試行する場合、ステージに進行中のアクションがないことが必要です。ステージを再試行するには、すべてのアクションが失敗しているか、一部のアクションが失敗して他のアクションが成功している必要があります。

重要

失敗したステージを再試行すると、そのステージ内の最初のアクションからすべてのアクションが再試行されます。失敗したアクションを再試行すると、ステージ内のすべての失敗したアクションが再試行されます。これにより、同じ実行内で以前に成功したアクションの出力アーティファクトは上書きされます。

アーティファクトが上書きされても、以前に成功したアクションの実行履歴は保持されます。

コンソールを使用してパイプラインを表示している場合、再試行できるステージに [ステージの再試行] ボタンまたは [失敗したアクションの再試行] ボタンが表示されます。

AWS CLI を使用している場合は、get-pipeline-state コマンドを使用して、何らかのアクションが失敗したかどうかを判断できます。

注記

次の場合は、ステージを再試行できないことがあります。

  • ステージ内のすべてのアクションが成功したため、ステージが失敗ステータスになっていない。

  • ステージが失敗した後、パイプライン全体の構造が変更された。

  • ステージで別の再試行がすでに進行中です。

ステージ再試行に関する考慮事項

ステージ再試行に関する考慮事項は以下のとおりです。

  • ステージ障害時の自動再試行は、1 回の再試行に対してのみ設定できます。

  • ステージ障害時の自動再試行は、Source アクションを含むすべてのアクションに対して設定できます。

失敗したステージを手動で再試行する

コンソールまたは CLI を使用して、失敗したステージを手動で再試行できます。

ステージ障害時の自動再試行を設定する」で説明しているように、障害時に自動的に再試行するようにステージを設定することもできます。

失敗したステージを手動で再試行する (コンソール)

失敗したステージまたはステージ内の失敗したアクションを再試行するには
  1. AWS Management Console にサインインして、CodePipeline コンソール https://console.aws.amazon.com/codesuite/codebuild/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-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 ファイルを作成します。その後、retry-stage-execution コマンドに --cli-input-json パラメータを指定して実行します。JSON ファイルに必要な詳細を取得するには、get-pipeline-state コマンドを使用するのが最も簡単です。

    1. ターミナル (Linux、macOS、UNIX) またはコマンドプロンプト (Windows) で、パイプラインの get-pipeline-state コマンドを実行します。例えば、「MyFirstPipeline」という名前のパイプラインに対しては、以下のようなコマンドを入力します。

      aws codepipeline get-pipeline-state --name MyFirstPipeline

      コマンドに対する応答には、各ステージのパイプラインの状態情報が含まれます。以下の例では、応答は [Staging] ステージで 1 つ以上のアクションが失敗したことを示しています。

      { "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 でパイプラインと詳細を表示する」を参照してください。

ステージ障害時の自動再試行を設定する

ステージ障害時の自動再試行を設定できます。ステージは 1 回の再試行を行い、失敗したステージの再試行ステータスを [パイプラインを表示する] ページに表示します。

再試行モードを設定するには、自動再試行の対象を、失敗したステージ内のすべてのアクションにするか、失敗したアクションのみにするかを指定します。

ステージ障害時の自動再試行を設定する (コンソール)

コンソールを使用して、自動的に再試行するようにステージを設定できます。

自動的に再試行するようにステージを設定する (コンソール)
  1. AWS Management Console にサインインして、CodePipeline コンソール (https://console.aws.amazon.com/codesuite/codebuild/home を開きます。

    AWS アカウントに関連付けられているすべてのパイプラインの名前とステータスが表示されます。

  2. [Name] で、編集するパイプラインの名前を選択します。

  3. パイプライン詳細ページで、[編集] を選択します。

  4. [編集] ページで、編集するアクションに関連する [ステージを編集する] を選択します。

  5. [自動ステージ設定][ステージ障害時の自動再試行を有効にする] の順に選択します。パイプラインに変更を保存します。

  6. [自動ステージ設定] で、次のいずれかの再試行モードを選択します。

    • ステージ内のすべてのアクションを再試行するように指定するには、[失敗したステージを再試行] を選択します。

    • ステージ内の失敗したアクションのみを再試行するように指定するには、[失敗したアクションを再試行] を選択します。

    パイプラインに変更を保存します。

    CodePipeline でのステージ障害時の自動再試行を設定する編集画面の例。
  7. パイプラインの実行後に、ステージの障害が発生した場合は、自動再試行が行われます。以下の例は、自動的に再試行されたビルドステージを示しています。

    ステージが失敗して一度再試行されたパイプラインの例。
  8. 再試行の詳細を表示するには、[詳細を表示] を選択します。ウィンドウが表示されます。

    試行が 1 回あったことを示す再試行ステージメタデータウィンドウの例。

自動的に再試行するようにステージを設定する (CLI)

AWS CLI を使用して、障害時に自動的に再試行するようにステージを設定するには、「パイプライン、ステージ、アクションを作成する」および「CodePipeline でパイプラインを編集する」で詳述している、パイプラインを作成または更新するコマンドを使用します。

  • ターミナル (Linux、macOS、Unix) またはコマンドプロンプト (Windows) を開きます。次に AWS CLI を使用し、パイプライン構造の失敗条件を指定して update-pipeline コマンドを実行します。次の例では、S3Deploy という名前のステージの自動再試行を設定します。

    { "name": "S3Deploy", "actions": [ { "name": "s3deployaction", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "S3", "version": "1" }, "runOrder": 1, "configuration": { "BucketName": "static-website-bucket", "Extract": "false", "ObjectKey": "SampleApp.zip" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1" } ], "onFailure": { "result": "RETRY", "retryConfiguration": { "retryMode": "ALL_ACTIONS", }, }

自動的に再試行するようにステージを設定する (AWS CloudFormation)

AWS CloudFormation を使用して、ステージ障害時の自動再試行を設定するには、OnFailure ステージライフサイクルパラメータを使用します。RetryConfiguration パラメータを使用して再試行モードを設定します。

OnFailure: Result: RETRY RetryConfiguration: RetryMode: ALL_ACTIONS
  • 次のスニペットに示すように、テンプレートを更新します。次の例では、Release という名前のステージの自動再試行を設定します。

    AppPipeline: Type: AWS::CodePipeline::Pipeline Properties: RoleArn: Ref: CodePipelineServiceRole Stages: - Name: Source Actions: - Name: SourceAction ActionTypeId: Category: Source Owner: AWS Version: 1 Provider: S3 OutputArtifacts: - Name: SourceOutput Configuration: S3Bucket: Ref: SourceS3Bucket S3ObjectKey: Ref: SourceS3ObjectKey RunOrder: 1 - Name: Release Actions: - Name: ReleaseAction InputArtifacts: - Name: SourceOutput ActionTypeId: Category: Deploy Owner: AWS Version: 1 Provider: CodeDeploy Configuration: ApplicationName: Ref: ApplicationName DeploymentGroupName: Ref: DeploymentGroupName RunOrder: 1 OnFailure: Result: RETRY RetryConfiguration: RetryMode: ALL_ACTIONS ArtifactStore: Type: S3 Location: Ref: ArtifactStoreS3Location EncryptionKey: Id: arn:aws:kms:useast-1:ACCOUNT-ID:key/KEY-ID Type: KMS DisableInboundStageTransitions: - StageName: Release Reason: "Disabling the transition until integration tests are completed" Tags: - Key: Project Value: ProjectA - Key: IsContainerBased Value: 'true'

    障害時にステージを再試行するように設定する方法の詳細については、「AWS CloudFormation ユーザーガイド」で「StageDeclaration」の「OnFailure」を参照してください。