Post

파이어베이스 배포 + 깃허브 액션을 사용할 때 환경변수 적용안되는 오류

기존에 만들었던 프로젝트가 API KEY를 비롯해 숨겨져야하는 키들이 코드에 그대로 작성되어 있어, .env 파일을 사용하여 숨기도록 변경

vite를 사용한 프로젝트여서, 환경변수를 process.env가 아니라 import.meta.env.VITE_ 를 사용하여 불러왔다.

1
2
3
4
5
6
7
8
const firebaseConfig = {
  apiKey: import.meta.env.VITE_FIREBASE_API_KEY,
  authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN,
  projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID,
  storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID,
  appId: import.meta.env.VITE_FIREBASE_APP_ID
};

그리고 나서 바로 깃허브에 코드를 업로드하였으나, 다음과 같은 오류가 계속 발생하였다.

1
2
3
4
5
6
7
8
9
Uncaught FirebaseError: Firebase: Error (auth/invalid-api-key).
  at of (index-dc08a5e4.js:473:364)
  at W (index-dc08a5e4.js:473:412)
  at ai.instanceFactory (index-dc08a5e4.js:1508:354)
  at lk.getOrInitializeService (index-dc08a5e4.js:263:2810)
  at lk.initialize (index-dc08a5e4.js:263:2167)
  at VC (index-dc08a5e4.js:848:167)
  at _I (index-dc08a5e4.js:1523:424)
  at index-dc08a5e4.js:1538:321Understand this error

.env 파일은 내 로컬에만 존재하기 때문에, firebase는 .env 파일을 읽을 수 없기 때문에 발생한 오류이다.

구글링 해보니, 나와 같은 겪은 사람의 글이 있어 참고해서 오류를 해결했다.

먼저, 해당 프로젝트의 깃허브 레포지토리에 들어가 Settins -> secrets and variables -> Actions -> New repository secret 의 순서를 통해 env의 키를 등록해야한다. 깃허브가 자동으로 배포하는 액션을 수행할 때 레포지토리의 시크릿 키를 읽을 수 있도록 설정하는 것이다.

스크린샷 2024-07-10 오후 6 00 13

그리고, 깃허브 액션을 위한 .yml 파일에 환경변수의 값을 추가하면 된다.

나의 경우에는 firebase-hosting-merge.yml, firebase-hosting-pull-request.yml 두 가지 파일이 있어 모두 환경 변수의 값을 추가해주었다.

1
2
3
4
5
6
7
env:
  VITE_FIREBASE_API_KEY: $
  VITE_FIREBASE_AUTH_DOMAIN: $
  VITE_FIREBASE_PROJECT_ID: $
  VITE_FIREBASE_STORAGE_BUCKET: $
  VITE_FIREBASE_MESSAGING_SENDER_ID: $
  VITE_FIREBASE_APP_ID: $

전체 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools

name: Deploy to Firebase Hosting on merge
"on":
  push:
    branches:
      - main
env:
  VITE_FIREBASE_API_KEY: $
  VITE_FIREBASE_AUTH_DOMAIN: $
  VITE_FIREBASE_PROJECT_ID: $
  VITE_FIREBASE_STORAGE_BUCKET: $
  VITE_FIREBASE_MESSAGING_SENDER_ID: $
  VITE_FIREBASE_APP_ID: $
jobs:
  build_and_deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: npm install && npm run build
      - uses: FirebaseExtended/action-hosting-deploy@v0
        with:
          repoToken: "$"
          firebaseServiceAccount: "$"
          channelId: live
          projectId: react-shop-app-4692d

변경된 .yml 까지 커밋을 푸시하니 배포된 사이트가 제대로 잘 작동하는 것을 확인할 수 있었다.

스크린샷 2024-07-10 오후 6 03 18

참고 사이트

This post is licensed under CC BY 4.0 by the author.