본문 바로가기

Firebase

firebase .env 와 github actions 사용

728x90

private_key 관련 .env 정리 및 github actions에 Actions secrets and variables 사용

const admin = require('firebase-admin');
require("dotenv").config();

const serviceAccount = {
  ...,
  private_key_id: process.env.FIREBASE_PRIVATE_KEY_ID,
  private_key: process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n'),
  client_email: process.env.FIREBASE_CLIENT_EMAIL,
  client_id: process.env.FIREBASE_CLIENT_ID,
}

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});

admin에 사용되는 private_key 관련을 환경 변수로 사용하기 위해, dotenv를 설치한다.

 

dotenv

Loads environment variables from .env file. Latest version: 16.3.1, last published: 3 months ago. Start using dotenv in your project by running `npm i dotenv`. There are 36858 other projects in the npm registry using dotenv.

www.npmjs.com

그리고 .env 파일을 만들고 FIREBASE_PRIVATE_KEY 값들을 적는다. 

참고로, FIREBASE_PRIVATE_KEY를 바로 갖고 와서 사용하면, 에러가 발생한다.

FirebaseAppError: Failed to parse private key: Error: Invalid PEM formatted message.

뒤에 replace를 통해 format을 맞춰준다.

.replace(/\\n/g, '\n')

 

이제 Github에 Actions secrets and variables에 사용할 키 값들을 저장한다.

그리고 Github Action .yml 파일 job의 하단에 env를 추가해서 사용한다.

env:
  FIREBASE_PRIVATE_KEY_ID: ${{ secrets.FIREBASE_PRIVATE_KEY_ID }}
  FIREBASE_PRIVATE_KEY: ${{ secrets.FIREBASE_PRIVATE_KEY }}
  FIREBASE_CLIENT_EMAIL: ${{ secrets.FIREBASE_CLIENT_EMAIL }}
  FIREBASE_CLIENT_ID: ${{ secrets.FIREBASE_CLIENT_ID }}

 

728x90