経緯
前の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文を書くことができます
まとめ
こちらもよくあるケースかなと思い、備忘録としてまとめておきたいと思います
お役に立てると幸いです
今回も最後まで見てくださってありがとうございました