GitHub Actionsを使ってFirebaseにホスティングとCloudFunctionsをデプロイする両方を書いてあるものがなかったので
備忘録も兼ねて簡単にまとめます
※ GitHub Actionsとは、リポジトリに対するプッシュやプルリクエスト、Issueの作成などのイベントをトリガーとして、
事前にyamlファイルで設定した処理を実行する機能です。
yamlファイルの作成
リポジトリのルートに.githubというフォルダを作成し、その下にworkflowsというフォルダを作成します。
workflowsの下にyamlファイルを置きます。(ファイル名はなんでもOK)
[例]
sapmle/
├ .github/
├ workflows
└ develop.yaml
yamlファイルの中身
name: CI
# ブランチへのPUSHをトリガーとして発火する(この場合developブランチ)
on:
push:
branches:
- develop
jobs:
deploy:
runs-on: ubuntu-latest
strategy:
# マトリックスの定義。${{ matrix.XXX }}でファイル内で呼び出せる
matrix:
node-version: [13.x]
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Prepare Node Env
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: install
run: npm install
- name: build
run: npm run build
- name: Deploy firebase hosting
uses: w9jds/firebase-action@v1.1.0
with:
# ${{ secrets.XXX }} はGitHubのシークレットに設定した値。
args: deploy --only hosting,firestore --project ${{ secrets.PROJECT_ID }} -f
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
- name: Ready to deploy functions
run: |
# cloudfunctionsのフォルダに移動
cd functions
npm install
- name: Deploy firebase functions
uses: w9jds/firebase-action@v1.1.0
with:
args: deploy --only functions --project ${{ secrets.PROJECT_ID }} -f
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
処理の中身
1 npm install で依存関係のインストール
2 ビルド
3 firebase にホスティング
4 CloudFunctionsのフォルダーに移動し、functionsをデプロイ
〜以下構文の解説〜
name
GitHub上のリポジトリのアクションページにワークフローの名前が表示される
on
ワークフローをトリガーするためのもの
複数のイベントを設定することも可能
job
ワークフローで実行される一連のステップ
steps
ジョブに紐づく一連のタスク
※細かい書き方は以下を参考
https://docs.github.com/ja/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions
まとめ
今回は最低限のデプロイの記述までですが、実際運用する場合にはCloudFunctionsの環境変数を設定するなど
必要なステップが増えると思いますので、適宜追加してもらえればと思います。