HugoのサイトをGithub ActionsでFirebaseにデプロイする
Publish date: 2024-10-14
今まではHugoのサイトをCloud Buildを使ってデプロイしていました。 Github Actionsを使った方法に変更したので手順を記載しておきます。
背景
Hugoをバージョンアップして久しぶりに記事を書こうとして調べてみると、 Cloud Buildで使っていたContainer Registryが非推奨となっていました。
また、今後ツールはGithub Actionsを使っていきたいと思っていたのでこれを機に乗り換える事にしました。
手順
1. Google CloudのCloud Buildを停止
GitHubリポジトリへのプッシュをトリガーにデプロイを走るように設定していました。
「Cloud Build > トリガー」から対象の設定を探して、操作から"無効にする"を選びました。
2. サービスアカウントとキーの作成
Firebaseと紐づいているプロジェクトでアカウントとキーの作成を行いました。
- 「IAMと管理 > サービスアカウント」から新規にサービスアカウントを選ぶ
- 名前等は適当に、ロール「Firebase の管理者」で作成
- 作成したアカウントを選択し、キーのタブから「鍵を追加>新しい鍵を作成」をクリック
- JSONタイプでキーを作成する(ダウンロード)
3. GitHub 環境変数の設定
対象のリポジトリの環境変数を設定しました。 (FIREBASE_TOKENはdeprecatedらしいのでGCP_SA_KEYを使うようにしました)
- GitHubのリポジトリから「Setting > Security > Actions secrets and variables」を表示する
- 「New repository secret」をクリックし、2つのキーを作成する
- Name=PROJECT_ID Secret=FirebaseのプロジェクトID
- Name=GCP_SA_KEY Secret=2で作成したキーの中身
4. Github Actionsの設定
「.github/workflows/main.yml」をリポジトリに作成しました。 これでGitHubにプッシュすれば自動でデプロイされます。
name: hugo_firebase_deploy
on:
push:
branches:
- master
jobs:
build:
name: build hugo projects
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: '0.135.0'
- name: build hugo pages
run: |
hugo
- name: Archive Production Artifact
uses: actions/upload-artifact@v4
with:
name: hugopublic
path: public
# - name: Check public directory
# run: ls -al public
deploy:
name: Deploy
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: hugopublic
path: public
# - name: Check downloaded directory
# run: ls
- name: Deploy to Firebase
uses: w9jds/firebase-action@master
with:
args: deploy --only hosting
env:
GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }}
PROJECT_ID: ${{ secrets.PROJECT_ID }}
参考ページ
- HugoプロジェクトをFirebase Hostingに自動デプロイするGitHub Actionsを設定してみた | DevelopersIO
- GitHub Actions で Cloud Functions for Firebase のCD環境を作る