简体   繁体   中英

Add .env Secrets to Nuxt App Deploying on Firebase Hosting with Github Actions

I'm trying to deploy a Nuxt app to firebase hosting using github actions...

The deploy worked fine until I added my firebase config to.env - it runs fine on localhost but when deployed the api key and other config doesn't seem to be registering.

.env

FIREBASE_APIKEY=mykey
FIREBASE_AUTHDOMAIN=mydomain
FIREBASE_DATABASEURL=mydburl
FIREBASE_PROJECTID=projectid
FIREBASE_STORAGEBUCKET=bucket
FIREBASE_MESSAGINGSENDERID=senderid
FIREBASE_APPID=appid
FIREBASE_MEASUREMENTID=measurementid

nuxt.config.js

// Nuxt-Fire Module Options
    firebase: {
        config: {
            apiKey: process.env.FIREBASE_APIKEY,
            authDomain: process.env.FIREBASE_AUTHDOMAIN,
            databaseURL: process.env.FIREBASE_DATABASEURL,
            projectId: process.env.FIREBASE_PROJECTID,
            storageBucket: process.env.FIREBASE_STORAGEBUCKET,
            messagingSenderId: process.env.FIREBASE_MESSAGINGSENDERID,
            appId: process.env.FIREBASE_APPID,
            measurementId: process.env.FIREBASE_MEASUREMENTID
        },
        onFirebaseHosting: true,
        services: {
            auth: {
                persistence: 'local', // default
                initialize: {
                    // onAuthStateChangedMutation: 'ON_AUTH_STATE_CHANGED_MUTATION',
                    onAuthStateChangedAction: 'onAuthStateChanged'
                },
                ssr: true
            },
            firestore: true,
            storage: true,
            performance: true
            // analytics: true,
        }
    },

deploy.yml

name: Firebase Continuous Deployment

on:
    push:
        branches: [master]

jobs:
    firebase-deploy:
        runs-on: ubuntu-latest

        steps:
            - uses: actions/checkout@master
            - uses: actions/setup-node@master
              with:
                  node-version: '12'
            - run: yarn install
              env:
                  FIREBASE_APIKEY: ${{ secrets.FIREBASE_APIKEY }}
                  FIREBASE_AUTHDOMAIN: ${{ secrets.FIREBASE_AUTHDOMAIN }}
                  FIREBASE_DATABASEURL: ${{ secrets.FIREBASE_DATABASEURL }}
                  FIREBASE_PROJECTID: ${{ secrets.FIREBASE_PROJECTID }}
                  FIREBASE_STORAGEBUCKET: ${{ secrets.FIREBASE_STORAGEBUCKET }}
                  FIREBASE_MESSAGINGSENDERID: ${{ secrets.FIREBASE_MESSAGINGSENDERID }}
                  FIREBASE_APPID: ${{ secrets.FIREBASE_APPID }}
                  FIREBASE_MEASUREMENTID: ${{ secrets.FIREBASE_MEASUREMENTID }}
            - run: yarn generate
            - uses: w9jds/firebase-action@master
              with:
                  args: deploy --only hosting
              env:
                  FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

github的秘密

The environment variables were being run on yarn install instead of on yarn generate...

deploy.yml

name: Firebase Continuous Deployment

on:
    push:
        branches: [master]

jobs:
    firebase-deploy:
        runs-on: ubuntu-latest

        steps:
            - uses: actions/checkout@master
            - uses: actions/setup-node@master
              with:
                  node-version: '12'
            - run: yarn install
            - run: yarn generate
              env:
                  FIREBASE_APIKEY: ${{ secrets.FIREBASE_APIKEY }}
                  FIREBASE_AUTHDOMAIN: ${{ secrets.FIREBASE_AUTHDOMAIN }}
                  FIREBASE_DATABASEURL: ${{ secrets.FIREBASE_DATABASEURL }}
                  FIREBASE_PROJECTID: ${{ secrets.FIREBASE_PROJECTID }}
                  FIREBASE_STORAGEBUCKET: ${{ secrets.FIREBASE_STORAGEBUCKET }}
                  FIREBASE_MESSAGINGSENDERID: ${{ secrets.FIREBASE_MESSAGINGSENDERID }}
                  FIREBASE_APPID: ${{ secrets.FIREBASE_APPID }}
                  FIREBASE_MEASUREMENTID: ${{ secrets.FIREBASE_MEASUREMENTID }}
            - uses: w9jds/firebase-action@master
              with:
                  args: deploy --only hosting
              env:
                  FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

I add the same issue, it is the name of your env variable.

If you wannt Nuxt to inject your env variable, they must start with NUXT_ENV_ ( NUXT_ENV_FIREBASE_APIKEY=mykey for instance) in your.env file.

See: Automatic injection of environment variables from Nuxt documentation form more details

And then in your code you use the variable like process.env.NUXT_ENV_FIREBASE_APIKEY

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM