Развертывание разных файлов service-account-credentials.json для разных облачных функций - PullRequest
0 голосов
/ 07 февраля 2019

Работает над созданием двух отдельных проектов Firebase, один из которых является средой разработки, а другой - нашей производственной средой, чтобы имитировать реальные вещи при тестировании новых функций.

Всякий раз, когда мне нужно развернуть в облаке функции в любом из проектов, я делаю следующее:

  1. Скопируйте и вставьте правильные учетные данные учетной записи службы в службу-файл account-credentials.json

  2. Выберите псевдоним соответствующего проекта (dev или prod)

firebase use dev или firebase use prod

Развертывание облачных функций в соответствующем проекте

firebase deploy --only functions

Мне кажется, что это наивный и утомительный способ сделать это.Есть ли лучший способ сделать это, где у меня может быть файл service-account-credentials-prod.json и файл service-account-credentials-dev.json в моем каталоге функций, в зависимости от того, какой псевдоним проекта я использую,он будет знать, какие учетные данные службы необходимо развернуть?

Буду очень признателен, если кто-нибудь укажет мне правильное направление

1 Ответ

0 голосов
/ 07 февраля 2019

У меня также есть два проекта: разработка и производство.

В /functions У меня есть оба файла:

/functions/production-cred.json и

/functions/development-cred.json

Я выполняю развертывание, используя соответствующие команды:

firebase deploy --only functions -P development или

firebase deploy --only functions -P production.

В index.js Я использую переменную среды process.env.GCLOUD_PROJECT дляопределить, какая среда используется.Эта переменная будет содержать имя вашего проекта, которое должно отличаться в зависимости от производства и разработки, вы не можете распечатать его, чтобы проверить.

Вот пример:

const env = process.env.GCLOUD_PROJECT
const development = (env == "myDevProject")
const database = development ? devDbUrl : prodDbUrl
const serviceAccountFile = development ? "devCred.json" : "prodCred.json"
const serviceAccount = require(`./${serviceAccountFile}`)
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: database
})

Делать это так нене требуется, чтобы вы установили псевдоним с firebase use dev|prod.Раньше я делал это так же, как и вы, и это улучшение сделало развертывание быстрее и надежнее.

...