見出し画像

React x Firebase のCIを Github Actions で組む方法

前提

- React 16.13
- Firebase 8.6

アプリ自体は Create React App で組みました。

FirebaseのAPIキーはリポジトリにあげるの避けたいので、環境変数(REACT_APP_FIREBASE_API_KEY)にしておきます。その他の設定はenvファイルに出します。

.env.production

REACT_APP_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
REACT_APP_FIREBASE_DATABASE_URL=https://your-project.firebaseio.com
REACT_APP_FIREBASE_PROJECT_ID=your-project
REACT_APP_FIREBASE_STORAGE_BUCKET=your-project.appspot.com
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=1234567890
REACT_APP_FIREBASE_APP_ID="1:1234567890:web:1234567890"

src/index.js

・・・

import * as firebase from "firebase/app";

firebase.initializeApp({
  apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
  authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
  databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,
  projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
  storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
  appID: process.env.REACT_APP_FIREBASE_APP_ID,
});

・・・

手順

1. Firebase CLI のトークン取得
2. Github リポジトリのsecret設定
3. Github Actions のワークフロー設定

詳しく

1. Firebase CLI のトークン取得

firebase login:ci

CIのコンテナ上で認証するためのトークンを発行します。
https://firebase.google.com/docs/cli?hl=ja

指定された URL にアクセスし、Google アカウントを使用してログインします。

スクリーンショット 2020-07-27 11.38.15

2. Github リポジトリのsecret設定

リポジトリのsecretに、FirebaseトークンとAPIキーを登録します。

スクリーンショット 2020-07-27 16.51.01

FIREBASE_TOKEN: 手順1で発行したトークン
REACT_APP_FIREBASE_API_KEY: FirebaseアプリのウェブAPIキー

3. Github Actions のワークフロー設定

.github/workflows/deploy.yml

name: React, Firebase

on:
  push:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 5

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup node
        uses: actions/setup-node@v1
        with:
          node-version: 12.18.3

      - name: Install dependencies
        run: |
          yarn

      - name: Build React app
        env:
          REACT_APP_FIREBASE_API_KEY: ${{ secrets.REACT_APP_FIREBASE_API_KEY }}
        run: |
          yarn build

      - name: Setup Firebase CLI
        run: |
          npm install -g firebase-tools

      - name: Deploy Firebase
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
        run: |
          firebase deploy --token $FIREBASE_TOKEN

これで完成です。

画像3


いいなと思ったら応援しよう!