okaryo.log

GitHubActionsで特定のファイルに変更があったときのみワークフローを走らせる | okaryo.log

GitHubActionsで特定のファイルに変更があったときのみワークフローを走らせる

    #GitHub#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がマイクロソフトに買収されて本当によかった。


関連記事
最新記事
プロモーション

This site uses Google Analytics.