テストが成功したらデプロイするみたいに、あるジョブの実行には前のジョブが成功が必要となるワークフローを書くには、needs
を使うとできます。
name: build on: [push] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@master # テストのステップ deploy: runs-on: ubuntu-latest needs: [test] steps: - uses: actions/checkout@master # デプロイのステップ
テストは毎回実行したいけど、デプロイはmasterブランチのみといったシナリオもよくあると思います。
on: push: branches: - master jobs: # テストやデプロイのジョブ
のように書くと、masterブランチのみ実行されますが、ワークフロー単位では制御できません。(テストもmasterだけになります。)
そこで、if
を使うとmasterブランチのみ実行するステップを書くことができます。ジョブではなくステップでの制御なので、すべてのステップに書く必要があります。
name: build on: [push] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@master # テストのステップ deploy: runs-on: ubuntu-latest needs: [test] steps: - uses: actions/checkout@master if: contains(github.ref, 'master') # デプロイのステップ