firebase cliを使えば簡単にデプロイができてしまいますが、サンプルリポジトリではGitHub Actions
でデプロイを自動化しています。
ここではおまけとして、GitHub Actions
をつかってFirebase HostingへFlutter webのアプリをデプロイする方法を紹介します。
GitHub Actionsとは
GitHub ActionsとはGitHubが2019年11月に正式リリースした、CI/CDワークフローをGitHub上で構築できるサービスです。
パブリックリポジトリでは完全に無料で使えて、プライベートリポジトリでも1ヶ月あたり2000分までなら無料で使用できます。
サンプルリポジトリでの例
基本的には以下の記事のGitHub Actions の手直し
以降を参考に実装を行いました。
以下の2つのファイルが対象ですが、やっていることはほぼ同じなので、本番デプロイの方のみ解説します。
.github/workflows/firebase-hosting-merge.yml
.github/workflows/firebase-hosting-pull-request.yml
name: Deploy to Firebase Hosting on merge
'on':
push:
branches:
- main
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Flutter
run: git clone https://github.com/flutter/flutter.git
- name: Add path
run: echo "$(pwd)/flutter/bin" >> $GITHUB_PATH
- name: Download Flutter packages
run: flutter pub get
- name: Create .env
uses: SpicyPizza/create-envfile@v1.3
with:
envkey_LIFFID: ${{ secrets.LIFFID }}
envkey_GAS_URL: ${{ secrets.GAS_URL }}
- run: flutter build web
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_FLUTTER_LIFF_SCHEDULER }}'
channelId: live
projectId: flutter-liff-scheduler
記事と異なるところは.env
ファイルを生成しているところです。
secrets
からLIFFID
とGAS_URL
を取得して.env
を生成しています。
Secrets
の設定方法
- リポジトリの
Settings -> Secrets -> Actions
をクリックしてActions secrets
ページを開きます。 -
New repository secret
を押してsecret
を追加します。
サンプルリポジトリの例では以下のsecretの追加が必要です。 -
FIREBASE_SERVICE_ACCOUNT_FLUTTER_LIFF_SCHEDULER
- 以下の記載に従って
firebase init hosting:github
を実行してください。 - https://github.com/FirebaseExtended/action-hosting-deploy#options
- 以下の記載に従って
-
GAS_URL
-
LIFFID
-
TEST_GAS_URL
-
GAS_URL
と同じですが、プレビュー用に作成した環境のものを設定してください。
-
-
TEST_LIFFID
-
LIFFID
と同じですが、プレビュー用に作成した環境のものを設定してください。
-
GitHub Actionsの解除方法
例えばサンプルリポジトリをクローンしたりフォークしたりしてご自身のリポジトリとして管理する場合、GitHub Actions
が動かない状態で更新を続けるとエラーが出続けてしまうと思います。
その際は単純に対象のworkflowを削除してしまうか、Create .env
より下の部分をコメントアウトしてしまえばデプロイが走らなくなります。