【GitHub Actions】GitHub Actionsを使ってFirebase HostingへNext.jsアプリを簡単デプロイ
はじめに
こんにちは、がんがんです。
最近はNext.jsを用いた開発をよく行っています。Next.jsで何か作るときは無料で使えるということもあり、Hosting先やFunctionsとしてFirebaseを用いることが多々あります。
しかし、クラウドサービスを使用するときのあるあるとして、「デプロイがめんどくさい」ということがあるかと思います。
実際、とてもめんどくさいなと思いながらデプロイコマンドを打っています。そこで以前から気になっていたGitHub Actionsを用いた自動デプロイ環境を整えることにしました。
今回はGitHub Actionsを用いたFirebase HostingへのCI / CD環境の設定に関する備忘録を残しておきます。
目的
- GitHub Actionsを使ってみる
- Firebase Hostingへのデプロイを自動化する
参考記事
公式サイト
ワークフローを設定する - GitHub Docs
GitHub Actionsのワークフロー構文 - GitHub Docs
GitHub Action for Firebase · Actions · GitHub Marketplace · GitHub
Firebaseサイドの準備
まずはHosting先のプロジェクトを用意する必要があります。プロジェクトの準備やHostingに関しては下記を参照ください。
gangannikki.hatenadiary.jp
上記サイトと異なる点はFirebaseへのログイン方法です。今回はciシステムで生成されるトークンが必要になるため、ciシステムでログインします。
$ firebase login:ci
ログイン時に生成したトークンはリモートリポジトリ→Setting→Secretsよりシークレットキーの設定を行ってください。
ワークフローの設定
GitHub Actionsでワークフローの作成を行っていきます。下記コードはNode.jsとFirebaseにおけるExampleを参照して作成しています。
今回のケースでは/my-app
直下にpackage.jsonが存在するため、RUNのたびに移動している感じです。こちらは各アプリごとに変更ください。
/.github/workflow/firebase.yml |
name: Deploy Firebase Hosting on: push: branches: - dev jobs: build-and-deploy: name: Firebase Deploy runs-on: ubuntu-latest strategy: matrix: node-version: [14.x] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - name: install package run: | cd my-app yarn install --frozen-lockfile - name: build Next.js run: | cd my-app yarn build - name: export Next.js run: | cd my-app yarn export - name: deploy to Firebase Hosting uses: w9jds/firebase-action@master with: args: deploy --only hosting env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
おわりに
今回はGitHub Actionsを用いてFirebase Hostingへのデプロイを自動化していきました。テストやデプロイ関係はなにかと面倒なので今後もどんどん自動化を検討していきたいと思います。