ジョブを再実行するのではなく、失敗したステップを再試行した方がよい場合があります(この場合、時間とお金を節約できます)。 この記事では、例を使用し、「when 」属性を使用して、失敗したステップを再試行する方法を説明します。
最初に、when
属性のさまざまなパラメーターを見ていきましょう。
- when: on_success > これはデフォルトのオプションであり、前のすべてのステップが成功した(終了コード 0 が返された)場合にのみステップが実行されます。
- when: always > 前のステップの終了ステータスにかかわらず、処理を実行します。
- when: on_fail > 直前のステップが失敗した(ゼロ以外の終了コードを返した)場合にのみ処理が実行されます。
失敗したステップの再試行
デフォルトでは、CircleCI は config.yml
で定義された順序通り、ステップが失敗するまで(ゼロ以外の終了コードを返すまで)ジョブステップを 1 つずつ実行します。 コマンドが失敗すると、それ以降のジョブステップは実行されません。
when
属性をジョブステップに追加することで、この挙動を変えることができます。 ジョブのステータスに応じてステップを続行するか、スキップするかを選択することも可能になります。
それでは、when: on_fail を使用して失敗したステップを再試行する例をご紹介していきます。
次のサンプルの config.yml ファイルでは、「Run on fail status」ステップは、前のステップがエラー(exit 1)のため トリガーされます。
version: 2.1 workflows: version: 2 build_deploy: jobs: - build jobs: build: docker: - image: circleci/python:3.7.5 steps: - checkout - run: name: Run commands command: | echo "I will exit fail status" exit 1 - run: name: Run on fail status command: | echo "I am result of above failed job" when: on_fail
補足:同じコマンドを次のステップで(when 属性を付けて)再試行したり、他のコマンドを使用したりできます。 ユーザーは API エンドポイントを使用してビルドを再試行することもできます。 上記は when
属性がどのように機能するかを確認する例になります。
次のスクリーンショットでは、前のステップが失敗したときに、「when」属性を含むステップがトリガーされたことが確認できます。
補足:Workflow のステータスは、この場合 FAILED になります。
次のサンプルの config.yml ファイルでは、前のステップの出力が成功(exit 0)であるため、「Run on fail status」が トリガーされません。
version: 2.1 workflows: version: 2 build_deploy: jobs: - build jobs: build: docker: - image: circleci/python:3.7.5 steps: - checkout - run: name: Run commands command: | echo "I will exit success status" exit 0 - run: name: Run on fail status command: | echo "I am result of above failed job" when: on_fail
以上でwhen
属性を使用して失敗したステップを再試行する方法をご紹介しました。
ビルドのお役に立てば幸いです。
コメント
記事コメントは受け付けていません。