如何将Firebase-Admin凭据放入环境变量中?

时间:2018-10-04 21:26:07

标签: firebase firebase-admin codeship

我正在尝试在Codeship CI / CD上设置Firebase项目,并且当项目存储在环境变量中时,我似乎无法获得服务凭证JSON密钥来与我的项目一起使用。

MVCE

Dev环境启动脚本

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);

代码船脚本

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\"."}

0 个答案:

没有答案