GitHub にコンテンツを push すると、 hugo を使ってサイトをビルドし、 その結果を Firebase Hosting にデプロイする。
Firebase 設定方法
Firebase でホスティング先を作成する
- プロジェクトを追加
- プロジェクト内で Hosting を追加。
Git リポジトリに Firebase ホスティング情報を登録
Firebase CLI をインストールしておく。
blog のトップディレクトリで firebase の設定ファイルを作成。
firebase login
firebase init
これで次のファイルがローカルに作成されるので、 git リポジトリに追加する。
.firebaserc
{
"projects": {
"default": "blog-hugo-issei"
}
}
firebase.json
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}
コマンドラインから firebase deploy --non-interactive
と実行することで、
public
ディレクトリ以下をデプロイできることを確認しておく。
Buddy 設定方法
Webから対話的に設定できる。
- Buddy から GitHub リポジトリへのアクセスを許可する。
- プロジェクトを新規作成し、Git Hosting Provider として先に登録した GitHub、その中のリポジトリとしてこのブログの blog-hugo を選択する。
- Pipeline に Hugo でのビルドプロセスを登録する。
- Actions に Hugo を追加。
- Environment タブを開き、hugo のインストールスクリプトを編集。新しいバージョンをインストールするように。
apt-get update && apt-get install -y wget wget -O hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.82.1/hugo_0.82.1_Linux-64bit.deb dpkg -i hugo.deb rm hugo.deb
- Run タブを開きビルドスクリプトを編集する。デフォルトだと
hugo
だけなので、コマンドラインオプションを追加して不要なファイル削除とミニフィケーションを有効に。二行目はこのブログの RSS の URL が途中で変わったことに対する対応なので、通常は不要。
hugo --cleanDestinationDir --minify cp public/index.xml public/feed.xml
- Pipeline に Firebase へのデプロイプロセスを登録。
- Actions に Firebase を追加
- Firebase アカウントを登録(コマンドラインツールを使ってアクセストークンを取得して登録)
- Firebase project に blog-hugo-issei を設定
GitHub Actions 設定方法(停止中)
設定ファイル の作成、動作確認済み。
有効にすると GitHub リポジトリへの push イベントをトリガーとして、 仮想マシンで Hugo を使ってサイトをビルド後、 Firebase と、 GitHub アカウント isseis-gh を使用してプロジェクトページの gh-pages ブランチの2箇所にデプロイする。
GitHub Actions for Hugo
仮想マシンに Hugo をインストールする GitHub Action。
使用するバージョンを指定するか、
あるいは最新版を常に使う場合には latest
としておく
このサイトでは SCSS を使っているので、
SCSS 対応の hugo バイナリをインストールするために extended: true
と指定しておく。
Firebase Hosting GitHub Action
仮想マシンから Firebase にファイルをデプロイする GitHub Action。 Google 公式ではないが、Google の有志がメンテしている
- GitHub から Firebase プロジェクトにアクセスするためのサービスアカウントを作成し、
アカウントの JSON キーを GitHub リポジトリの encrypted secret に登録する。
firebase CLI で次のコマンドを実行するだけで、一連の処理をしてくれる。
firebase init hosting:github
- firebase CLI の出力メッセージに従って
firebasesServiceActount
を設定。 - 合わせて
projectId
を Firebase でホスティングするプロジェクトの ID にし、channelId: live
として本番環境へのデプロイを指示
再開方法
- GitHub Actions - Select workflow
Enable workflow - GitHub Pages - Setting - Pages
Source: Branch gh-pages