Как развернуть облачные функции в разных проектах внутри .firebaser c? - PullRequest
3 голосов
/ 08 мая 2020

Есть ли способ развертывать функции в разных проектах firebase, перечисленных внутри .firebaserc, с помощью одной команды?

У меня есть этот образец .firebaserc

{
  "projects": {
    "default": "project1",
    "project2": "project2-abcd"
  }
}

При обновлении функций Я делаю:

firebase use default && firebase deploy && firebase use project2 && firebase deploy

Если у меня тонны проектов, команда становится длиннее, поэтому я создал сценарий узла, который автоматизирует развертывание для всех проектов, перечисленных в .firebaserc:

const { promisify } = require("util");

const exec = promisify(require("child_process").exec);
const readFile = promisify(require("fs").readFile);

const deploy = async () => {
  try {
    const data = await readFile("./.firebaserc", "utf-8");
    const projects = Object.keys(JSON.parse(data).projects);

    for (const proj of projects) {
      console.log(`Deploying functions to ${proj}...`);
      const { stdout, stderr } = await exec(
        `firebase use ${proj} && firebase deploy`
      );

      console.log("stdout:", stdout);
      console.log("stderr:", stderr);
    }
  } catch (e) {
    console.log(e);
  }
};

deploy();

который работает, но я пытаюсь найти альтернативу, если она есть.

1 Ответ

0 голосов
/ 08 мая 2020

Не могли бы вы использовать флаг --project?

пр. firebase deploy --project=project2

См. https://firebase.google.com/docs/cli#use_aliases.

Если вы хотите запустить одну команду для проекта Firebase, которому вы назначили псевдоним prod, тогда вы можете запустить, например, firebase deploy --project = prod.

Обновлено

Хотите ли вы развернуть все проекты, перечисленные внутри .firebaser c?

Можно использовать как следующую однострочную команду.

например,

cat .firebaserc | jq '.projects | keys | .[]' | xargs -I {} firebase deploy --project={}

См .:

...