任意のタイミングでジョブを終了する方法は、run:
で circleci step halt
を実行することです。
なぜこんなものが必要かというと、masterにタグがpushされたときだけ処理したいような場合があります。
しかしこんなふうにfiltersを設定しても、masterにプッシュされただけで、タグが無くてもreleaseジョブは実行されてしまいます。
config.yml
workflows:
version: 2
release:
jobs:
- release:
filters:
branches:
only:
- master
tags:
only:
- /^.*$/
そこでreleaseジョブの中で、タグが設定されていなかったら後続の処理をしないでスキップしたいという発想になりました。
以下のようなジョブ定義で意図した動作になりました。
config.yml
jobs:
release:
<<: *job_base
steps:
- run:
name: skip_if_no_tag
command: |
if [ "${CIRCLE_TAG}" == "" ]; then
echo "no tag"
circleci step halt
fi
- checkout
- run: bundler install
- <<: *restore_gradle_cache
- <<: *resolve_gradle
- <<: *save_gradle_cache
- run: fastlane deploy