前回のブログ

🔗 ブログの構造を整理した

その後のお話

細かいところをせっせと直しているときに、もうひとつのサイトのほうもやろうかなと思い始めたんですね。 他にも放置しているところありますけど・・・。

🔗 k-kaz が Hugo で遊ぶサイト

結局、やめたんですけどね。

こちらで使っているthemeは stack なんですけど、public部分(Hugoで生成されたhtmlたち)を別リポジトリで管理しているんですよね。

1個にまとめちゃったほうが管理しやすいんじゃないの?と、のっちーに相談していたのです。結局のところは先ほど書いた通り、何もしなかったわけですが、相談している中であることを知りました。

publicを生成する場所

  1. ローカル環境で生成されたpublicをGitHubへpushする ※いまの私
  2. publicはpushせず、GitHub上でHugoを実行してpublicを生成する

みんな2番のやり方知ってた!?

のっちー曰く、2のほうが主流だってさ。

じゃあ、2にしよう

publicがpush、pullの対象から外れるので多少の時短になりますね。
あとは手元にHugoがなくてもMarkdownをイジってpushすると公開が可能だったり、あれこれとあるようですが、正直なところ2にしなくても困らんのですけど、整理ついでに実行です。

GitHubでHugoを動かすというのがよくわからないし、それって無料契約でもできるのかと疑問でしたができました。
Actionsで PC環境を用意 → Hugoを都度インストール → 実行 が可能なんですって。すごいね。

publicをGit管理から外す

.gitignore に追記

1
2
# Hugoのビルド出力(Actionsで作るのでpushしない)
/public/

Actions書き換え

元々、publicの中身をWEBサーバーへFTP転送する仕組みが書かれています。
その前にHugoをインストールして実行する手順を追加。

こちらはサンプルです。
FTP転送も省いています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
name: build hugo site
on:
  push:
    branches:
      - main
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # ① PC(仮想マシン)の用意:ソースを取得
      - name: 🚚 Get latest code
        uses: actions/checkout@v6
        with:
          fetch-depth: 0   # 最終更新日(enableGitInfo)のため履歴を全取得

      # ② Hugo のインストール(Extended版・バージョン固定)
      - name: ⚙️ Setup Hugo
        uses: peaceiris/actions-hugo@v3
        with:
          hugo-version: '0.163.2'
          extended: true

      # ③ Hugo の実行(ビルド)
      - name: 🏗️ Build
        run: hugo --minify

push用スクリプトの修正

私の場合、ローカルでスクリプトを実行してpushしています。
その中でhugoを実行するくだりがありますが、GitHub上で動かすことになるため、単純に削除します。

過去の履歴を消す

さらについでの話。
publicを管理しなくなったので、その部分の過去の履歴も不要となりました。

やらなくても支障はありませんが、ここまで来たら・・・。

コマンド紹介

git filter-repoというコマンドでお掃除が可能ということ。
Linuxにインストールして実行しました。
gitの標準機能には含まれていないのでインストールが必要です。

git filter-repo --path public --invert-paths
public以外を残す = publicのみを削除する という意味になるそうです。

手順

ざっくり書くとこんな感じ。

  • git cloneする ※お掃除するときは新規に作るのがスジらしい
  • git filter-repo --path public --invert-paths を実行する ※origin外れる
  • force pushする ※origin付け直しも含め

ちなみに不要となった履歴情報を消した結果、168.96MiB → 37.73MiB に減少。

MBとMiB

  • MB(メガバイト):基本は 10進(キリのいい単位)
    • 1 MB = 1,000,000 bytes(10^6)
  • MiB(メビバイト):2進(コンピュータが得意な単位)
    • 1 MiB = 1,048,576 bytes(2^20)

つまり 1 MiB は 1 MB より約 4.86% 大きいです。

  • 1 MB ≒ 0.954 MiB
  • 1 MiB ≒ 1.049 MB

昔から「1KB=1024B」みたいに“2進っぽく”使われがちだったんですが、厳密にはそれだと10進の定義とズレます。
その混乱を減らすために、2進のほうは KiB/MiB/GiB という別名が作られました。

のっちーのおかげで新しいことを知った

記憶にはとどまらないので、たくさんNotionに書いておいた。
いや、のっちーに書いてもらった。

GitHub Actionsも、ローカルにやってきているとはつゆ知らず。
.github\workflows\ の中にいらっしゃいました。

毎回、WEBで書き換えて、そのあとローカルからpushしようとするとバージョンが合わないと怒られていました。
他のファイルと同じようにローカルで書き換えれば済んだのね。アハッ。