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する時なんかは以下のリポジトリを使うと便利かもしれません。