ようへいの日々精進XP

よかろうもん

実録にっぽん CircleCI ばなし 〜 ジョブを正常中断したい 〜

tl;dr

ジョブを中断したかったので調査したら、リファレンスをちゃんと読め案件でしたが、ここにメモしておきます。

ジョブを正常に中断したい

中断出来ない例

以下のように、正常なステータスで中断したい部分で exit 0 と書いても、最後の test2 まで実行されてしまいます。

version: 2.1

executors:
  default:
    docker:
      - image: 'cimg/python:3.6'

commands:
  command_1:
      steps:
        - run:
            name: Command Test 1
            command: |
              echo 'command 1 test'
              exit 0

jobs:
  command_test:
    executor: default
    steps:
      - checkout
      - command_1
      - run:
          name: test1
          command: |
            echo 'test1'
            exit 0
      - run:
          name: test2
          command: |
            echo 'test2'

workflows:
  version: 2

  command_test:
    jobs:
      - command_test:
          filters:
            branches:
              only:
                - master

f:id:inokara:20201226094041p:plain

ちなみに、exit 1 と書くと、ちゃんと中断してくれますが、今回は「正常なステータス」で終了したいので、要件を満たしていません。

中断する例

以下のように、中断したい箇所に circleci-agent step halt を記載すると、「正常なステータス」で終了することが出来ました。

version: 2.1

executors:
  default:
    docker:
      - image: 'cimg/python:3.6'

commands:
  command_1:
      steps:
        - run:
            name: Command Test 1
            command: |
              echo 'command 1 test'
              circleci-agent step halt

jobs:
  command_test:
    executor: default
    steps:
      - checkout
      - command_1
      - run:
          name: test1
          command: |
            echo 'test1'
            circleci-agent step halt
      - run:
          name: test2
          command: |
            echo 'test2'

workflows:
  version: 2

  command_test:
    jobs:
      - command_test:
          filters:
            branches:
              only:
                - master

f:id:inokara:20201226094106p:plain

これは、リファレンス にちゃんと記載されていました。

f:id:inokara:20201226094241p:plain

以上

メモでした。