GitHub ActionsでFirebase Hostingへデプロイできるようになったので、
試してみたときの備忘録。
HostingへデプロイするGitHub Actionsはいろいろある
以下の2つがあるっぽい。
- GitHub Action for Firebase
- GitHub Actionでfirebase-toolsが利用できるやつ
- Hosting以外も使えるので、今回はこっちを利用
- Deploy to Firebase Hosting
- Firebaseの公式で利用されているやつ
firebase init hosting:github
ではこれが使われる- Hosting以外は対応していないが、チャネルなどの設定もできる
今回は、Functionsもデプロイできるようにしたかったので、
GitHub Action for Firebaseを利用している。
ディレクトリ構成
ディレクトリ構成はこんな感じ。
. ├── .github │ └── workflows │ └── firebase-hosting-prod.yml │ ├── app ... Nuxtアプリ ├── functions ... Functions │ ├── src │ ├── package.json │ └── tsconfig.json ├── .firebaserc ├── firebase.json ├── nuxt.config.ts ├── package-lock.json ├── package.json └── tsconfig.json
firebase-hosting-prod.ymlの中身
name: Deploy to Firebase Hosting and Cloud Functions # どのタイミングで実行するかの設定 # masterブランチにプッシュされたら実行する。 "on": push: branches: - master # 実行するジョブ(一連の操作)の設定 jobs: build_and_deploy_prod: runs-on: ubuntu-latest steps: # リポジトリをチェックアウト - name: Checuout uses: actions/checkout@v2 # Nuxtアプリのビルド # 環境変数が必要な場合は、ここで設定 - name: Build for Hosting run: npm ci && npm run build env: BASE_URL: ${{ secrets.BASE_URL }} API_KEY: ${{ secrets.API_KEY }} AUTH_DOMAIN: ${{ secrets.AUTH_DOMAIN }} PROJECT_ID: ${{ secrets.PROJECT_ID }} STORAGE_BUCKET: ${{ secrets.STORAGE_BUCKET }} MESSAGING_SENDER_ID: ${{ secrets.MESSAGING_SENDER_ID }} APP_ID: ${{ secrets.APP_ID }} MEASUREMENT_ID: ${{ secrets.MEASUREMENT_ID }} # NuxtアプリをHostingへデプロイ - name: Deploy for Hosting uses: w9jds/firebase-action@master with: args: deploy --only hosting --project=${{ secrets.PROJECT_ID }} env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} # Cloud Functionのビルド - name: Build for Function run: npm ci --prefix functions && npm run build --prefix functions # Cloud Functionのデプロイ - name: Deploy for Function uses: w9jds/firebase-action@master with: args: deploy --only functions --project=${{ secrets.PROJECT_ID }} env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
secrets.XXX
は、GithHubからブラウザ上で設定する。
・暗号化されたシークレット - GitHub Docs
secrets.FIREBASE_TOKEN
は、firebase login:ci
で取得したトークンを設定。
設定後に、firebase-hosting-prod.yml
を含めて、pushすると、
GitHub Actionsが実行されて、デプロイできるようになる。
以上!! 便利!!
参考にしたサイトさま
- GitHub Action for Firebase · Actions · GitHub Marketplace
- Deploy to Firebase Hosting · Actions · GitHub Marketplace · GitHub
- GitHubプルリクエストを介してライブチャンネルとプレビューチャンネルにデプロイする | Firebase
- Automate Firebase Functions Deployment with Github Actions CI | by Md. Abdul Halim Rafi | Mainly Coding | Medium
- Firebase公式のGitHubとHostingのインテグレーションが熱い🔥
- Firebase公式Github ActionsでPull RequestごとにHostingのプレビュー環境を作る
- npm - How can I deploy firebase functions through github actions? - Stack Overflow
- GitHub Actionsのドキュメント - GitHub Docs