Gatsby x Github Actions x Netlifyで環境変数を使う
2分目次
経緯と解決方法
Netlify でホスティングしている当ブログですが、ビルド時間がなかなかなので、GitHub Actions でビルドまで行うようにしていました。
そんで、今度は Firebase を使ってあれこれしたいなぁと思い、下記記事を参考に環境変数を設定していたのですが
またエラーが出るんですよね、projectId は string であるべき的な。
エラー
FirebaseError: projectId must be a string in FirebaseApp.options
Netlify で環境変数の設定はしているし、GATSBY_
のプレフィックスも一応つけていたのですがどうもエラーが止まらないと。なんでかなぁと原因を探っていたら『お、そういえばビルドまで Github Actions で行ってんじゃん』と昔のことなんで忘れていたんですよね。
で、Github Actions で環境変数を設定しようとすると今度は
ターミナル
! [remote rejected] master -> master (refusing to allow an OAuth App to create or update workflow `.github/workflows/build.yml` without `workflow` scope)
error: failed to push some refs to 'https://github.com/9631kunn/myblog.git'
こんなエラーが。仕方ないのでブラウザで Github 開いてファイルを下記に編集。
build.yml
name: Build Gatsby and deploy to Netlify
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: "12.x"
- run: npm ci
- run: npm run build
env:
GATSBY_FIREBASE_API_KEY: ${{ secrets.GATSBY_FIREBASE_API_KEY }}
GATSBY_FIREBASE_AUTH_DOMAIN: ${{ secrets.GATSBY_FIREBASE_AUTH_DOMAIN }}
GATSBY_FIREBASE_DATABASE_URL: ${{ secrets.GATSBY_FIREBASE_DATABASE_URL }}
GATSBY_FIREBASE_PROJECT_ID: ${{ secrets.GATSBY_FIREBASE_PROJECT_ID }}
GATSBY_FIREBASE_STORAGE_BUCKET: ${{ secrets.GATSBY_FIREBASE_STORAGE_BUCKET }}
GATSBY_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.GATSBY_FIREBASE_MESSAGING_SENDER_ID }}
GATSBY_FIREBASE_APP_ID: ${{ secrets.GATSBY_FIREBASE_APP_ID }}
GATSBY_FIREBASE_MEASUREMENT_ID: ${{ secrets.GATSBY_FIREBASE_MEASUREMENT_ID }}
- uses: netlify/actions/cli@master
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
with:
args: deploy --dir=public --prod
secrets: '["NETLIFY_AUTH_TOKEN", "NETLIFY_SITE_ID"]'
無事エラーが出ず、Firestore からデータを引っ張ってこれました。
どうでも後日談
今Gitpodからローカルサーバー立ててfirebase使用するページ開くとまた件のprojectId is~~
のエラーが……。Gitpodで立てたローカルサーバーだとまた別途環境変数設定しなくちゃいけないぽそう。あ~ん