「when」属性を使用して失敗したステップを再試行する方法

ジョブを再実行するのではなく、失敗したステップを再試行した方がよい場合があります(この場合、時間とお金を節約できます)。 この記事では、例を使用し、「when 属性を使用して、失敗したステップを再試行する方法を説明します。

 最初にwhen 属性のさまざまなパラメーターを見ていきましょう。

  1. when: on_success >  これはデフォルトのオプションであり、前のすべてのステップが成功した(終了コード 0 が返された)場合にのみステップが実行されます。
  2. when: always > 前のステップの終了ステータスにかかわらず、処理を実行します。
  3. 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」属性を含むステップがトリガーされたことが確認できます。

when attribute CircleCI - fail

補足: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 attribute CircleCI - Success

 

以上でwhen 属性を使用して失敗したステップを再試行する方法をご紹介しました。

ビルドのお役に立てば幸いです。

この記事は役に立ちましたか?
40人中15人がこの記事が役に立ったと言っています

コメント

0件のコメント

記事コメントは受け付けていません。