GitHub Action で特定のディレクトリ配下に変更があったときのみワークフローを実行する

// 🙎‍♂️ Yuji Tsuburaya📆 September 29, 2020🔖 Github Actions

on.<push|pull_request>.paths / GitHub Docs
on.<push|pull_request>.paths / GitHub Docs

過去の自分に早くこの事実を伝えてあげたい気持ちでいっぱいなので、この記事を書きました。

僕たちのプロダクトは yarn workspace を使用しており、1つのリポジトリで複数のパッケージを管理しています。このような構成の都合上、GitHub Actions のデフォルトの設定だと、パッケージAに変更があった際に、パッケージBのワークフローも実行されてしまうという課題がありました。

そこで僕は、git のログから diff を取り、ファイル名を再帰的に見てゴニョゴニョしていけば、不要なワークフロー実行をスキップできるのでは?と思っていろいろ調査していました。しかし、結論、そんな複雑なことは必要なく、GitHub Actions に当初から用意されている機能で実現できることが分かりました。

on.<push|pull_request>.paths

公式ドキュメントにもある通りです。on.<push|pull_request>.paths にパス名を記述してやることで、変更されたファイルが1つ以上パス名と一致した場合にのみ、ワークフローを実行できるようになります。

on.<push|pull_request>.paths | GitHub Docs

yarn workspace の場合は、以下のような感じで、パッケージ指定で、特定のパッケージに変更があった場合にのみ、ワークフローを実行することができるようになります。(ワイルドカードが使えます)

それ以外のパスの変更は、ワークフローに乗ることもなく、キャンセル扱いにもなりません(ここが Netlify との違いです。Netlify ではキャンセル扱いでした。)

on: push: branches: - develop paths: - "packages/package-a/**"

学び

急がば回れ。ドキュメントはどこかのタイミングで、ちゃんと網羅的に読んでみるのが良いですね。

以下のボタンを押して、SNS でシェアしてくれたら喜びます 👨‍🎤

広告

書いた人

___35d

Yuji Tsuburaya (@___35d

👩‍💻 Frontend Engineer

🏢 J-CAT CTO Co-Founder / ex. BizReach

🎨 by @ch1ch1ch1_123

💚 Minimalism / Notion / Figma

📱 Author of @FastNotion

詳しいプロフィールはこちら