GitHubActionsで特定のファイルに変更があったときのみワークフローを走らせる
はじめに
最近プライベートでアプリを作っていて、静的なページをWeb上にホスティングしておきたい場面が出てきてのでFirebase Hostingを利用した。
Firebase Hostingの初期設定自体はfirebase init hosting
コマンドで簡単に作成できる。
この際、GitHub Actionsのワークフロー設定ファイルも自動で作ってくれて、プルリクを作成した際のプレビューページのデプロイや、マージ時の本番デプロイのワークフローが自動で出来上がる。
今やっているアプリ開発でもCI/CDにGitHub Actionsを利用していたので、Firebase Hostingの設定の際もこの自動ワークフローを利用した。
しかし、開発しているとプルリクやマージのたびにHostingへのデプロイワークフローが走ってしまい、少し面倒に感じた。CIが完了するのに余計な時間がかかるし、GitHubActionsの無料枠は余裕があるとはいえ無駄なジョブを走らせたくはない。
そこでHostingへのデプロイが必要なときのみ、デプロイワークフローを走らせるようにした。
方法
前置きが長くなってしまったが方法は簡単で、on.<push|pull_request|pull_request_target>.<paths|paths-ignore>
を利用することで実現できる。
公式のドキュメントはこちら。
自分はFirebase Hostingのファイルをpublic
ディレクトリの中に入れているので、このディレクトリ内のファイルに変更があった場合にだけHosting用のワークフローを走らせるにはこうする。
# mainブランチにマージがあったときに走るワークフロー
name: Deploy to Firebase Hosting on merge
on:
push:
branches:
- main
paths:
- 'public/**'
# PRが作成されたときに走るワークフロー
name: Deploy to Firebase Hosting on PR
on:
pull_request:
paths:
- 'public/**'
おわり
これで必要なときにだけ必要なワークフローを走らせるようにすることができた。
GitHub Actionsはドキュメントもしっかりしているし、便利で手軽に使えるし本当に良いサービスだ。GitHubがマイクロソフトに買収されて本当によかった。