Как поместить учетные данные Firebase-Admin в переменную среды? - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь настроить проект Firebase на Codeship CI / CD, и я не могу получить ключ JSON учетных данных службы для работы с моим проектом, когда он хранится в переменной среды.

MVCE

Скрипт запуска среды разработки

export FIREBASE_CREDENTIAL=BASE64ENCODED_credentials_json
export DATABASE_URL=https://my-project.firebaseio.com

echo $FIREBASE_CREDENTIAL | base64 -D > FIREBASE_CREDENTIAL.json
npm start

index.ts

import * as admin from "firebase-admin";

const credentials = require("../FIREBASE_CREDENTIAL.json");
const databaseURL = process.env.DATABASE_URL;

console.log(credentials.project_id); // succeeds
console.log(databaseURL); // is correct

admin.initializeApp({
  ...credentials,
  databaseURL,
  databaseAuthVariableOverride: { uid: "scraper" }
});

admin
  .database()
  .ref("/test")
  .set(admin.database.ServerValue.TIMESTAMP);

Сценарий Codeship

echo $FIREBASE_CREDENTIAL | base64 -di > FIREBASE_CREDENTIAL.json
nvm install 8
npm install
npm test

Результаты

На компьютере разработчика запись завершается, как и ожидалось

В контейнере Codeship CI я получаю эту ошибку.

console.warn node_modules/@firebase/logger/dist/index.cjs.js:66
    [2018-10-05T12:53:51.316Z]  @firebase/database: FIREBASE WARNING: {"code":"app/invalid-credential","message":"Credential implementation provided to initializeApp() via the \"credential\" property failed to fetch a valid Google OAuth2 access token with the following error: \"Failed to parse access token response: Error: Error while making request: getaddrinfo ENOTFOUND metadata.google.internal metadata.google.internal:80. Error code: ENOTFOUND\"."}
...