クラウドエンジニアのノート

情報技術系全般,自分用メモを公開してます。

1からFirebase Hosting + Basic認証のdeployをGithub Actionsで自動化する

はじめに

参考にさせた頂いた記事 qiita.com qiita.com

手動deployまで

まず最初の記事を参考にFirebaseで新規プロジェクトを作成します。
基本的に手順に従っていれば問題ないです。
ちなみに注意点として、 公開したいフォルダをfunctions以下にしないとうまくできませんでした。(正しいやり方があるとはおもうのですが…)

[本題] Github Actionsでdeploy

.github/workflows/nodejs.yml を追加する部分ですが、私はこの記事通りコピペしてもPermissionで怒られて動作しませんでした。(2020/04/01現在)

私はnode.jsのbuildは不要ですので、 npm install 解決方法 を参考にしながら、以下のように.ymlファイルを作成しました。

name: Node CI

on: 
  push:
    branches: 
      - master

jobs:
  deploy_to_firebase_hosting:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [12.x]

    steps:
      - name: Checkout the repository
        uses: actions/checkout@master

      - name: Deploy to Firebase
        run: |
          mkdir ~/.npm-global
          npm config set prefix '~/.npm-global'
          export PATH="$HOME/.npm-global/bin:$PATH"
          npm install -g npm
          npm install -g firebase-tools
          cd functions
          npm install --save express
          npm install --save basic-auth-connect
          cd ..
          firebase deploy --token $FIREBASE_TOKEN
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

あとは、記事通りFIREBASE_TOKENだけGithub環境変数に追加したら準備完了です。 (今回は公開するだけなので、PASSWORDは不要)
masterにpushすると自動deployが走り、勝手に公開されるようになっています。

CIの注意点

この.ymlを書いていてハマったのが、各stepのrunの環境変数などは引き継がれないらしく、exportしても、.bashrcに追記しても別のrunで反映されなかったため、runを一つにまとめました。
もしbuildをするなら、その点注意が必要です。(各runの最初でpathを設定など)

最後に

もしFirebase functionなどを使わないで、シンプルにdeployする時なんかは以下のリポジトリを使うと便利かもしれません。

github.com