Open3
Firebase Functions(v2) ✕ Crashlytics Reportで自動でGithub Issue化するまで
環境の切り分け
./.firebaserc
{
"projects": {
"production": "<production-project-id>",
"staging": "<staging-project-id>"
}
}
環境の確認
$ firebase projects:list
✔ Preparing the list of your Firebase projects
┌──────────────────────┬────────────────────────────────┬────────────────┬──────────────────────┐
│ Project Display Name │ Project ID │ Project Number │ Resource Location ID │
├──────────────────────┼────────────────────────────────┼────────────────┼──────────────────────┤
│ hoge-production │ hoge-production (current) │ **** │ asia-northeast1 │
├──────────────────────┼────────────────────────────────┼────────────────┼──────────────────────┤
│ hoge-staging │ hoge-staging │ **** │ us-central │
└──────────────────────┴────────────────────────────────┴────────────────┴──────────────────────┘
2 project(s) total.
環境変数
functions/.env
/ functions/.env.staging
にそれぞれ配置。 firebase deploy
時にそれぞれのaliasに合わせた環境で変数が設定される
他にもCLIで直接設定する方法もあるようです。
実際console.cloudでは .env ファイルも参照できてしまうので、デプロイ時に変数を読み込む形でもいいかも
index.ts
import * as productions from "./productions";
import * as developmemts from "./developments";
exports.productions = productions;
exports.developmemts = developmemts;
ファイルに分割することでFunctionのgroup化ができ、deploy時に特定groupだけdeloyするようなことが可能
package.json
... 略
"scripts": {
"lint": "eslint --fix --ext .js,.ts .",
"build": "tsc",
"build:watch": "tsc --watch",
"serve": "yarn build && firebase emulators:start --only functions",
"shell": "yarn build && firebase functions:shell",
"start": "yarn shell",
"deploy": "firebase use production && firebase deploy --only functions:productions",
"deploy:staging": "firebase use staging && firebase deploy --only functions",
"logs": "firebase functions:log"
},
... 略
yarn deploy
時には functions/developmemts
の関数をデプロイしないようにしています
書きかけ
↓
- v2 function 名の制約にハマった話
- axiosのエンコードにハマった話
- tsのenumを使わなかった話
- firebase project idの取得方法