【GithubActions】前のJobの実施状況によって次のジョブを実施するか判定する
経緯
前のJobが終わったとき(スキップされていない場合)のみ実行したいケースが何回かありました
当然前のJobと同じ条件をコピペすればいいのですが、このケースが何回も続けば変更箇所が増えるのでメンテナンス性が落ちてしまいます
なんで、できるだけコピペじゃないやり方ないかなと探して見つかったのでまとめておきたいと思います
方法
見てもらったほうが早いと思うので、サンプルを記載します
name: ANDROID_CI
on:
push:
branches:
- develop
- master
pull_request:
branches:
- develop
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: debug build
if: endsWith(github.ref, '/develop') || endsWith(github.base_ref , 'develop')
id: debug_build
run: ./gradlew assembleDebug
- name: upload debug build
if: steps.debug_build.conclusion != 'skipped'
uses: actions/upload-artifact@v2
with:
name: debug_apk
path: app
デバッグビルドはdevelopブランチでのみ実施 そのビルド処理が走ったときだけアップロード処理を走らせたい、というケースになっています
手順としては、ベースとしたい処理にidを振り、次に実施する処理の分岐として、steps.(ID名).conclusion != 'skipped'を登録する
そうすることで、実行されたときのみ実施されるようになります
ちなみにsteps.(ID名).conclusion == 'skipped'とすればスキップされたときだけ実行されるので、疑似if-else文を書くことができます
まとめ
こちらもよくあるケースかなと思い、備忘録としてまとめておきたいと思います
お役に立てると幸いです
今回も最後まで見てくださってありがとうございました