Firebase FunctionsへのデプロイCI/CDで、ドキュメント(.md)を少し直しただけでもワークフローが毎回動くのがずっと気になっていました。実行時間もコストももったいないので、設定を見直した際の備忘録です。
やったこと
結論から言うと、on.push
にpaths-ignore
を追加して解決しました。これで、指定したファイルが変更されただけではワークフローが起動しなくなります。
具体的には、以下のように設定。
# ...
on:
push:
branches:
- main
- develop
paths-ignore:
- 'admin/**'
- '.github/workflows/deploy.yml'
- '.github/workflows/test.yml'
- 'README.md'
- '**/*.md'
# ...
admin
ディレクトリ配下や、他のワークフローファイル、あとはREADME
などのmdファイルをまるっと無視するように指定しました。これで、無駄なデプロイが走らなくなってスッキリ。
補足メモ
自動実行を抑制すると、逆に手動で実行したい場面も出てきそうです。そんな時のために、workflow_dispatch
を追加すると便利みたい。
# ...
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy'
required: true
default: 'dev'
type: choice
options:
- dev
- prd
これを使えば、Actionsの画面から手動でワークフローをトリガーし、さらにinputs
で実行時にデプロイ環境を選ぶUIも作れるので、かなり柔軟な運用ができそうだと感じました。
応用メモ
この設定は、やはりGitのブランチ戦略と組み合わせると効果的だと感じました。
main
ブランチ → 本番環境develop
ブランチ → 開発環境
という基本的なデプロイルールに加えて、'release/**'
や'hotfix/**'
のようなブランチパターンもトリガー対象に含めると、より実践的な開発フローに対応できそうでした。
# ...
branches:
- main
- develop
- 'release/**'
- 'hotfix/**'
# ...
要点メモ
paths-ignore
: 関係ないファイルの変更でCI/CDが動くのを防ぐ。コストと時間の節約になる。workflow_dispatch
: 手動実行の口も作っておくと、いざという時に柔軟に対応できるらしい。- ブランチ戦略: 自動デプロイのルールと組み合わせると、開発フローがスムーズになる。
誰かの参考になれば幸いです。