Chapter 12

【デプロイ:おまけ】GitHub Actionsを使ったFirebase Hostingへのデプロイ

tokku5552
tokku5552
2022.11.28に更新

firebase cliを使えば簡単にデプロイができてしまいますが、サンプルリポジトリではGitHub Actionsでデプロイを自動化しています。
ここではおまけとして、GitHub ActionsをつかってFirebase HostingへFlutter webのアプリをデプロイする方法を紹介します。

GitHub Actionsとは

GitHub ActionsとはGitHubが2019年11月に正式リリースした、CI/CDワークフローをGitHub上で構築できるサービスです。

https://github.co.jp/features/actions

パブリックリポジトリでは完全に無料で使えて、プライベートリポジトリでも1ヶ月あたり2000分までなら無料で使用できます。

サンプルリポジトリでの例

基本的には以下の記事のGitHub Actions の手直し以降を参考に実装を行いました。

https://zenn.dev/pressedkonbu/articles/deploy-flutter-web-app-with-firebase-hosting

以下の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からLIFFIDGAS_URLを取得して.envを生成しています。

Secretsの設定方法

GitHub Actionsの解除方法

例えばサンプルリポジトリをクローンしたりフォークしたりしてご自身のリポジトリとして管理する場合、GitHub Actionsが動かない状態で更新を続けるとエラーが出続けてしまうと思います。
その際は単純に対象のworkflowを削除してしまうか、Create .envより下の部分をコメントアウトしてしまえばデプロイが走らなくなります。