Развертывание переменных среды на хостинге Firebase - PullRequest
3 голосов
/ 21 марта 2020

Я использую Firebase в React, и при инициализации Firebase я использую переменные среды, извлеченные из моего файла .env с dotenv. Я хочу собрать и развернуть свое приложение React на хостинге Firebase, я использую GitHub Actions со следующим файлом рабочего процесса .yml:

name: Deploy
on:
  push:
    branches:
      - master

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Install Dependencies
        run: npm install
      - name: Build
        run: npm run build
      - name: Archive Production Artifact
        uses: actions/upload-artifact@master
        with:
          name: public
          path: public
  deploy:
    name: Deploy
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Download Artifact
        uses: actions/download-artifact@master
        with:
          name: public
      - name: Deploy
        uses: w9jds/firebase-action@master
        with:
          args: deploy --only hosting
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

Однако мой шаг сборки завершается неудачно (т. Е. npm run build), поскольку переменные среды не найдены Если я жестко закодирую значения вместо использования переменных среды, рабочий процесс будет успешным.

Нужно ли мне добавлять переменные среды в секреты GitHub, аналогично тому, как я добавил FIREBASE_TOKEN на этапе развертывания, и добавлять их? в рабочем процессе что-то вроде:

name: Deploy
on:
  push:
    branches:
      - master

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Install Dependencies
        run: npm install
      - name: Build
        run: npm run build
        env:
          FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }}
          FIREBASE_AUTH_DOMAIN: ${{ secrets.FIREBASE_AUTH_DOMAIN }}
          FIREBASE_DATABASE_URL: ${{ secrets.FIREBASE_DATABASE_URL }}
          FIREBASE_PROJECT_ID: ${{ secrets.FIREBASE_PROJECT_ID }}
          FIREBASE_STORAGE_BUCKET: ${{ secrets.FIREBASE_STORAGE_BUCKET }}
          FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.FIREBASE_MESSAGING_SENDER_ID }}
          FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }}
      - name: Archive Production Artifact
        uses: actions/upload-artifact@master
        with:
          name: public
          path: public
  deploy:
    name: Deploy
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Download Artifact
        uses: actions/download-artifact@master
        with:
          name: public
      - name: Deploy
        uses: w9jds/firebase-action@master
        with:
          args: deploy --only hosting
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

Я получаю ту же ошибку, говоря, что не могу найти токен API.

Когда я просматриваю файлы рабочего процесса в других основанных на Firebase Реагируйте на приложения, я не вижу никого, кто бы добавил эти переменные среды, как я предлагал. Как правильно обрабатывать переменные среды в приложениях, развернутых в Firebase? Они принадлежат на этапе сборки или развертывания?

1 Ответ

0 голосов
/ 04 мая 2020

Ваши пользовательские переменные env должны начинаться с REACT_APP_. Любые другие переменные, кроме NODE_ENV, будут игнорироваться, чтобы избежать случайного раскрытия секретного ключа на компьютере, который может иметь то же имя. Пожалуйста, ознакомьтесь с этой статьей Добавление пользовательских переменных среды .

В качестве дополнительного примечания вы также можете запустить npm run build вместе с переменными env, переданными в качестве параметров, таких как:

REACT_APP_FIREBASE_APIKEY=${{ secrets.REACT_APP_FIREBASE_APIKEY }} REACT_APP_FIREBASE_AUTHDOMAIN=${{ secrets.REACT_APP_FIREBASE_AUTHDOMAIN }} REACT_APP_FIREBASE_DBURL=${{ secrets.REACT_APP_FIREBASE_DBURL }} npm run build
...