LoginSignup
10
5

More than 5 years have passed since last update.

CircleCI2.0のapprovalジョブは実行されない

Last updated at Posted at 2018-06-22

Approval

CircleCI 2.0から追加された、workflowにおけるjobのApprovalトリガーについてです。
githubのPRのapproveのように、人が承認して初めて実行されるjobにつけるフラグです。

以下公式より引用

Holding a Workflow for a Manual Approval

.circleci/config.yml
workflows:
  version: 2
  build-test-and-approval-deploy:
    jobs:
      - search
      - request-testing:
          type: approval  # approvalを設定したjob
      - build:
          requires:
            - request-testing
      - build-mab-:
          requires:
            - request-testing
      - test:
          requires:
            - build-mab-
      - build-mab-aws:
          requires:
            - request-testing
      - test-aws:
          requires:
            - build-mab-aws

このようなyamlをかくと
image
このように、request-testingjobに依存した一連のjobが止まり、誰かがこの画面から承認しないと実行されません。

重いor危険なタスクをコミットごとに実行したくないケースや、自動化したいけど人が任意のタイミングで実行したいjobを登録するのに便利だなと思いました。

approvalジョブは実行されない

ただこの時に、approvalなジョブ、上の例だとrequest-testingジョブが実行されませんでした。
同じように疑問に持っている人がフォーラムで質問して、自己解決していました。

本当に単純なことですが、approvalなジョブはジョブとは言いつつ、定義すらいらないものでした。
上のサンプルを全て書くと以下のようになります。(若干簡略化してます)

.circleci/config.yml
defaults: &defaults
  working_directory: /tmp
  docker:
    - image: buildpack-deps:jessie

version: 2
jobs:
  search:
    <<: *defaults
    steps:
      - checkout
      - run: echo "search"
  # approvalなjobは中身の定義不要。定義しても実行されない。
  #request-testing:
  #  <<: *defaults
  #  steps:
  #    - checkout
  #    - run: echo "request-testing"
  build:
    <<: *defaults
    steps:
      - checkout
      - run: echo "build"
  test:
    <<: *defaults
    steps:
      - checkout
      - run: echo "test"


workflows:
  version: 2
  build-test-and-approval-deploy:
    jobs:
      - search
      - request-testing:
          type: approval  # approvalを設定したjob
      - build:
          requires:
            - request-testing
      - test:
          requires:
            - build

つまりjobsの中には入れますが、ユーザが自由に記述できるようなジョブではない、と思った方が良さそうです。
こういう時にはファイル全体のサンプルが欲しいですね。
一応、公式サンプルにもissueが上がってましたが、メンテされてなさそう。

おまけ:githubでの見た目も微妙?

Githubのcommit一覧やPR一覧でCIステータスアイコンが表示されると思います。
その表示が、Approvalなjobを含んでいるとちょっと微妙な感じになります。

スクリーンショット 2018-06-24 21.23.30_2.png
上の例だと上から三つめからapprovalなjobを追加したんですが、holdされたjobが残っていると黄色いアイコンになってしまいます。
PR内だとjobごとのステータスが確認できるので、問題ないとはいえ、ちょっと見た目が良くないですよね。。
statusバッジは未確認です。

参考

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5