Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase configuration for multiple projects/environments

I'm using Cloud Functions for Firebase with three different projects for development, testing and production purposes. Each project has a service-account.json. When I deploy the sources to an environment, the initialization looks like this:

var serviceAccount = require("./service-account-dev.json");  firebase.initializeApp({     credential: firebase.credential.cert(serviceAccount),     databaseURL: "https://nwDEV.firebaseio.com" }); 

This is a bit difficult to handle, because I have to change the code everytime I want to deploy to a different environment. Is there a way to have an overall configuration, e.g. in firebase.json or.firebasesrc, which allows to integrate the service-account and decides on deployment which configuration to choose?

Otherwise is there a possibility to detect under which environment the code is running and to load the specific service-account.json and to set the databaseURL-property?

like image 579
user7930645 Avatar asked Apr 27 '17 10:04

user7930645


People also ask

Can you have multiple Firebase projects?

A Firebase project can have one or more Firebase Apps registered to it (for example, both the iOS and Android versions of an app, or both the free and paid versions of an app).

How many projects can I deploy in Firebase?

A Firebase project is a container for Firebase Apps across Apple, Android, and web. Firebase restricts the total number of Firebase Apps within a Firebase project to 30.


1 Answers

You can use environment variables. https://firebase.google.com/docs/functions/config-env

  1. Select the project (you can use the command firebase projects:list to see them): firebase use my-project-development

  2. Set an environment variable firebase functions:config:set app.environment="dev"

  3. In your functions file, apply a conditional to choose the file: const serviceAccount = functions.config().app.environment === 'dev' ? 'credentials-dev.json' : 'credentials-prod.json';

Then you can use the file depending on the project:

firebase.initializeApp({     credential: firebase.credential.cert(serviceAccount),     databaseURL: "https://nwDEV.firebaseio.com" }); 
like image 86
Diego Avatar answered Sep 28 '22 06:09

Diego