Circle CI не работает с Firebase Admin SDK - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть Express API с использованием Firebase Admin SDK.

В настоящее время моему приложению не удается выполнить CI, поскольку оно не может инициализироваться на этапе тестирования из-за невозможности подключения к Firebase.

У меня есть файл serviceAccountKey.json в корне моего проекта, который я импортирую следующим образом.

import * as fbseAdmin from 'firebase-admin'

const FIREBASE_DB_URI = process.env.FIREBASE_DB_URI
const serviceAccount = require('../serviceAccountKey.json')

fbseAdmin.initializeApp({
  credential: fbseAdmin.credential.cert(serviceAccount),
  databaseURL: FIREBASE_DB_URI
})

export default fbseAdmin

Этот файл исключен из системы контроля версий, поскольку он содержит конфиденциальную информацию.

Первая проблема, с которой я столкнулся, - это когда моя сборка CI запускается, тесты не выполняются как Error: Cannot find module '../serviceAccountKey.json'

Как лучше всего подойти к этому?Должен ли я издеваться над файлом?Я бы предпочел не держать фиктивный файл вокруг моего решения.

Во-вторых, я считаю, что приложение не запустится, если Firebase не выполнит инициализацию правильно.

Должен ли я установить фиктивную Firebaseпроект для тестирования?

1 Ответ

0 голосов
/ 20 сентября 2018

Вам будет потребоваться действительный экземпляр вашего сертификата Firebase, если вам нужно инициализировать ваше приложение.

Если вы предпочитаете не проверять файл сертификата в системе контроля версий, с чем я согласенэто лучшая идея, вы можете вместо этого, возможно, настроить другое приложение в консоли Firebase, строго для целей тестирования.

Используя это приложение, вы можете кодировать сертификат Base64, устанавливая его в качестве переменной среды в вашей сборке.

Перед запуском приложения в контейнере CI вы просто выводите декодированный BASE64.Переменная среды в имя файла myServiceKey.json или что-то похожее.

steps:
  - checkout
  - run: echo $FIREBASE_SERVICE_KEY | base64 -di > ./${FIREBASE_SERVICE_ACCOUNT_CERT_NAME}

Это приведет к созданию файла, необходимого для тестирования в корневом каталоге вашего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...