[Hugo] Hugoで生成されるデプロイ対象ファイルのコミットまでをスクリプトで一括処理にした
概要
この記事について
Hugoによるブログ記事作成のデプロイまでの流れ
このブログはHugoという静的サイトジェネレータで管理している。
デプロイ先は、
GitHub Pagesという、GitHubに対して静的なウェブサイトをホスティングできるサービス。
大まかにはこのような流れ。
- Hugoの記事ファイル等を作成・編集する。
- hugoコマンドを用いてhtmlファイル等を自動生成する。
- gitでコミットする。
- GitHubのリポジトリにプッシュして
ブログを公開する。
コマンドの実行やファイルの管理のターミナルは
git bashを使用している。
コミットメッセージは必要か?
このとき、
hugoコマンドで生成するファイルに
いちいち丁寧なコミットメッセージをつけたりする必要が無いんじゃないかと思いはじめた。
(自動生成されたファイルの整理や変更、ましてやタイプミスやバグ修正などは全く必要ないため。それらはJavascriptファイルや記事ファイルのほうで対応する)
一人で運用する分には、
コミットメッセージはすべて「Hugo」で構わないように思える
(多人数で運用するウェブサイトはちょっと工夫がいるかも知れないけど)。
よって、Hugoのコマンド実行の準備からコミットまでの一連の流れを一括処理できる
シェルスクリプトを作成した。
前提
記事を作成・編集し、hugoコマンドを実行する前
作成環境
- Windows10
- git version 2.29.2.windows.2
- Hugo Static Site Generator v0.76.0/extended windows/amd64
コードとその内容
コード
git bashの環境設定ファイル(.bashrc あるいは.bash_profile)に
下記のように記入する。
1# エイリアス
2alias ga='git add '
3alias gc='git commit'
4
5# gitのrootディレクトリ位置に戻る
6function groot() {
7 if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
8 cd `pwd`/`git rev-parse --show-cdup`
9 fi
10}
11
12# コミットまでの一括処理
13function hugo_commit(){
14 groot
15 hugo
16 ga ./docs
17 gc -m 'hugo'
18}
groot関数
hugoコマンドを実行するためには、
一度git管理ディレクトリツリーのrootディレクトリに戻らなければならない。
そのためgroot関数を実行し、戻る。
GitHub Pagesのプロジェクトページについて
1ga ./docs
GitHub Pagesの静的ウェブサイトデプロイ方法には
ユーザーページとプロジェクトページの二種類が存在する(私が採用しているのは後者)。
プロジェクトページでは、設定したブランチの直下のdocsディレクトリを公開対象とするので、
Hugoのconfigファイルでdocsディレクトリにhtmlファイル等を出力するようにしている。
そのため、docsディレクトリ配下のみgit addすれば良い。
使用法
記事を書き終わって記事ファイル自身のコミットが済んだ後、
デプロイしたいタイミングでhugo_commitを実行する。
コミット後、リモートリポジトリにプッシュする。
comments powered by Disqus