Jekyll to hugoしたサイトはhugoアップデートで死ぬ

どうして

Jekyllから移行を行うとブランクのcontent/index.mdが配置されるため。

Jekyllからhugoにfredrikloch/JekyllToHugo: Small script for converting jekyll blog posts to a hugo siteを使って移行すると、index.mdが自動生成される。 そして、hugoの特定バージョンからはcontent/index.mdがある状態でレンダリングするとすべての投稿を無視してトップページのみレンダリングされる現象が発生する。

参考: fono.jp/index.md at 251809e97e98e1171728cdeff7714f87fcf98122 · fono09/fono.jp

ハマりポイント

設定とテーマを疑ってしまい、index.mdだとは自力で気づけなかった。 テーマでは対策済みのPagination | Hugoの仕様変更も疑って更に時間を空費した。

バージョンアップを忘れて、久々にテーマと本体の更新を行うと死ぬという現象なので、content フォルダを疑わないという認知バイアスがかかった。 視野狭窄マンなのでエンジニア向いてないのかも知れない。

もし、index.mdを疑ったとしても、ファイルのコメントで「自動生成だから触(らなくていいよ|るなよ)」と書いてあるからより凶悪。

経緯

経緯は以下の通り

  1. GithubのWebhook使ってオンプレで自動デプロイしたくなる
  2. hugoの最新バイナリを落としてくるようにしたため今回の現象が発生して一旦中断
  3. メンテナンスが不足していたのでメンテナンスする気になる
  4. テーマをバージョンアップする(自前フォークだったので最新追従)
  5. テーマ指定のhugoのバージョンが上がっているのでhugoバージョンアップ
  6. トップページ以外投稿も含めてレンダリングされなくなる
  7. config.toml を疑う
  8. テーマを差し替える
  9. テーマを元に戻す
  10. 今の手元クローンを削除して新規にクローンする
  11. hugoとテーマのバージョンを下げる
  12. 諦める
  13. Candle氏に依頼して3連休を過ごす
  14. index.md が原因だと判明する

ソースコード読めよ

わかる。だが、2日以上溶かして趣味プロダクトかつ、踏み抜いているのは自分だけとなると熱量失せる。

謝辞

蝋燭(Candle Doe)(@candle1388)さん / Twitter 助かりました。認知バイアス下では頼める他人が一番です。ありがとうございました。