こんにちは、GitHub Actionsつかってますか?
GitHub Actions は workflow(yamlファイル) 単位で柔軟に条件の指定ができます。
たとえば
on: push: branches: - 'master' paths: - 'go/*'
こんな感じであれば、goディレクトリ配下のファイルに変更があるmasterへのpushがあった場合に実行されます。
workfrlow単位ではなく、その中の job や step といった条件でも特定の条件での実行の可否のコントロールができます。
それを下記していきます。
job 単位での実行の可否
jobs.<JOB_NAME>.if という記述が可能です。
手っ取り早く例を書くと以下のような記述になります。
jobs: hoge-job: name: hoge-job runs-on: ubuntu-latest if: "contains( github.ref , '/feat/hoge')" steps:
条件は、ブランチが feat/hoge
にマッチする際にjobを実行します。
steps 単位での実行の可否
jobと同様にstepsに対してもifの記述が行なえます。
jobs.<JOB_NAME>.steps.if となり、例は以下のようになります。
jobs: hoge-job: name: hoge-job runs-on: ubuntu-latest steps:: ~~ snip ~~ - name: Set up Go 1.13 uses: actions/setup-go@v1 with: go-version: 1.13 id: go if: "contains( github.ref , '/feat/foo')"
ブランチが /feat/foo
に一致する場合に指定した steps を実行します。
参考
Workflow syntax for GitHub Actions - GitHub Help
Workflow syntax for GitHub Actions - GitHub Help
Contexts and expression syntax for GitHub Actions - GitHub Help
enjoy!