Github Actions で Firebase ファンクションをデプロイする際の注意点
概要
PR をマージしたときに、
Github Actions で Firebase ファンクションをデプロイするようにしたとき、
Github Actions が2回走り、その内1回のデプロイでエラーになりました。
それを解決した時のメモです。
エラー
ログの一部抜粋です。
※Firebase ファンクションに2つ関数があり、Firebase Hosting にもデプロイしています。
1つは成功し、1つはこけている。
ファンクションのデプロイ成功。
ファンクションのデプロイ失敗。
.github/main.workflow (雰囲気です)
workflow "Deploy workflow" { on = "push" resolves = ["Deploy"] } action "BranchCheck" { uses = "actions/bin/filter@master" args = "branch develop" } action "Deploy" { uses = "actions/npm@master" runs = "sh -c" args = ["npx firebase deploy --project xxx"] secrets = ["FIREBASE_TOKEN"] needs = ["BranchCheck"] }
原因
ブランチ削除のとき、Github Actions の環境変数 の GITHUB_REF には、デフォルトのブランチ(このリポジトリの場合は develop)が指定される。
よって、PRをマージする際、ブランチを削除するにチェックしていた場合、 develop ブランチかどうかのチェックに通り、デプロイが2回実行されてしまい、その内1回がこけていた。
修正
ブランチ削除の場合のフィルタを入れる。
https://github.com/actions/bin/pull/51 でマージされているのだが、真偽が逆になっているので、やめた。
修正後(雰囲気)
workflow "Deploy workflow" { on = "push" resolves = ["Deploy"] } action "BranchCheck" { uses = "actions/bin/filter@master" args = "branch develop" } action "Filter deleted branches" { uses = "UltCombo/action-filter-deleted-branches@master" needs = ["BranchCheck"] } action "Deploy" { uses = "actions/npm@master" runs = "sh -c" args = ["npx firebase deploy --project xxx"] secrets = ["FIREBASE_TOKEN"] needs = ["Filter deleted branches"] }