[Hugo] Hugoで生成されるデプロイ対象ファイルのコミットまでをスクリプトで一括処理にした

概要

この記事について

Hugoによるブログ記事作成のデプロイまでの流れ

このブログはHugoという静的サイトジェネレータで管理している。
デプロイ先は、
GitHub Pagesという、GitHubに対して静的なウェブサイトをホスティングできるサービス。

大まかにはこのような流れ。

  1. Hugoの記事ファイル等を作成・編集する。
  2. hugoコマンドを用いてhtmlファイル等を自動生成する。
  3. gitでコミットする。
  4. 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関数を実行し、戻る。

こちらの記事を参考にしました(LINK)

GitHub Pagesのプロジェクトページについて

1ga ./docs

GitHub Pagesの静的ウェブサイトデプロイ方法には
ユーザーページとプロジェクトページの二種類が存在する(私が採用しているのは後者)。

プロジェクトページでは、設定したブランチの直下のdocsディレクトリを公開対象とするので、
Hugoのconfigファイルでdocsディレクトリにhtmlファイル等を出力するようにしている。

そのため、docsディレクトリ配下のみgit addすれば良い。

使用法

記事を書き終わって記事ファイル自身のコミットが済んだ後、
デプロイしたいタイミングでhugo_commitを実行する。

コミット後、リモートリポジトリにプッシュする。

comments powered by Disqus