Published on

特定フォルダのファイルが変更された場合に GitHub Action を実行する

Authors

monorepo で運用している場合には,変更があったプロジェクトのみ Workflow を実行する・しないを制御したいです。

Workflow そのものを実行する・しないは on.<push|pull_request>.paths で設定することができます。 逆に特定のフォルダを除外したい場合は paths-ignore で除外できます。

on:
  push:
    paths:
      - 'src/**'
    paths-ignore:
      - 'docs/**'

https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths


続いて Workflow は常に実行したいけど,特定 step の実行する・しないを制御したい場合もあります。 https://github.com/marketplace/actions/has-changed-path のような action を使えばできそうな気配がありますが,まだ試せていません。 良い方法を知ってる方は教えてください。 (後で試して追記予定)

2021-10-09 追記

https://github.com/marketplace/actions/paths-changes-filter を使うことで実現することができます。

- uses: dorny/paths-filter@v2
  id: changes
  with:
    filters: |
      src:
        - 'src/**'

  # run only if some file in 'src' folder was changed
- if: steps.changes.outputs.src == 'true'
  run: ...