私のブログで最も人気のある記事が「GitHub ActionsでFirebaseにデプロイする」です。
不勉強だったのですが、GitHub Actionsのマーケットプレイスにある【w9jds/firebase-action】というworkflowでもfirebaseにデプロイする方法があったようなので、それを使ってみました。
Workflowを使うメリット
- package.jsonにfirebase-toolsを入れる必要が無いので、プロダクトで管理する必要が無い
正直、メリットとしてはこれくらいです。
GCPのロールを使って、firebaseにデプロイする方法もありましたが、私はこっちを使ってないので利便性がわかりません…。
事前準備が簡単になる等も無いので、強烈なメリットは無いと考えてます。
事前準備
私のブログの手順をほぼそのまま使ってください。
差分は下記点くらいです。
ディレクトリ構造
今回の記事では、create-react-appで作成しているので、ディレクトリ構造は以下の通りです。
/.github … GitHub Actions /my-app … Appディレクトリ /my-app/build … buildしたファイルの出力先
作ったワークフロー
Exampleをほぼコピーしています。
相違点としては、my-appというディレクトリを掘っているのでworking-directry:./my-app
やpath: my-app/build
、PROJECT_PATH: ./my-app
等でディレクトリを合わせています。
name: Build and Deploy on: push: branches: - master jobs: build: name: Build runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@master - name: Install Dependencies run: npm install working-directory: ./my-app - name: Build run: npm run build working-directory: ./my-app - name: Archive Production Artifact uses: actions/upload-artifact@master with: name: build path: my-app/build deploy: name: Deploy needs: build runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@master - name: Download Artifact uses: actions/download-artifact@master with: name: build path: my-app/build - name: Deploy to Firebase uses: w9jds/firebase-action@master with: args: deploy --only hosting env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} PROJECT_PATH: ./my-app
マーケットプレイスのworkflowに切り替えたい場合
もし、私の記事を見てworkflowを作成し、マーケットプレイスのworkflowに切り替えたい場合は下記だけ変えれば大丈夫です。
secretsの名前も一緒なので移行は簡単ですね。
きり丸のyml
- name: deploy to Firebase Hosting run: | yarn deploy --token=${{ secrets.FIREBASE_TOKEN }}
マーケットプレイスのyml
- name: Deploy to Firebase uses: w9jds/firebase-action@master with: args: deploy --only hosting env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} PROJECT_PATH: ./my-app
ソースコード
終わりに
下準備が楽になるのではないかと考え、使ってみました。
ただ、ログイン用のトークンを発行したり、Firebaseのページを用意したりする手間は変わりませんでした。
firebaseのトークンで簡単にセットアップした後、ロールを制限したGCPに切り替えていくのが今どきのやり方なんですかね?
私は個人でしか使っていないので、firebase login:ci
で発行されるトークンで充分だと思いますが…。
GCPのロールでもホスティングしたいのであれば、ぜひ使ってみてください。
もしこの記事が役に立ったのであれば、はてぶ、Twitterでの記事の拡散、twitterのフォローもよろしくお願いします。
私の励みになります。