LoginSignup
0
1

More than 3 years have passed since last update.

Firebase Hostingでデプロイする際の事故を防ぐ

Last updated at Posted at 2020-03-14

TL;DR

firebaseのhostingでfirebase deployをするとそのままデプロイされるのを防ぐためにシェルを噛ませる。

やりたかったこと

一つのfirebaseプロジェクトで、ステージング、プロダクションの2環境へホスティングしたい。

この際firebase deployを実行するとステージング、プロダクション両方にファイルが上がってしまうため、念の為一度確認をさせてから実行させる。

やったこと

firebase.jsonを以下のようにそれぞれ設定します。
https://firebase.google.com/docs/hosting/multisites を参考に連想配列で定義。

firebase.json
hosting: {[
  {
    "public": "public",
    "site": "staging",
    ...
  },
  {
    "public": "public",
    "site": "production",
    ...
  },
]}

package.jsonにそれぞれデプロイコマンドを定義します。

package.json
{
  "scripts": {
    "deploy" : "firebase deploy --only hosting:production",
    "deploy-stg" : "firebase deploy --only hosting:staging"
  }  
}

本来npmコマンドを忠実に実行すれば両方のサイトにファイルが上がることはないのですが、firebase deployを実行すれば両方の環境にファイルが上がってしまいます。

なんとなく事故る可能性を感じたので先程のfirebase.jsonに一工夫加えます。

firebase.json
hosting: {[
  {
    "public": "public",
    "site": "staging"
    ...
  },
  {
    "public": "public",
    "site": "production",
    "predeploy" : "sh ./shell/confirm.sh"
    ...
  },
]}

hostingにはデプロイ前とデプロイ後のトリガーがあるので、production環境のみshellを実行させるようにします。

/shell/confirm.sh
read -n1 -p "本番環境にデプロイしますが、よろしいですか? (y/N): " yn
if [[ $yn = [yY] ]]; then
  exit 0
else
  exit 1
fi

こうすることで、firebase deploynpm run deploy時に確認を促されるようになり、本番環境に誤ってファイルを上げてしまうことを防ぐことが出来ます!

まとめ

プロジェクト分けたほうが、もしかしたら早いかもですが1プロジェクトでサクッと終わらせたいときにはおすすめかなと。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1