Featured image of post Hugo ブログに GitHub Actions 自動デプロイを導入した話

Hugo ブログに GitHub Actions 自動デプロイを導入した話

やったこと

今日はブログの裏側をいくつかまとめて整備した。

  1. RSS フィードの改善
  2. GitHub Actions による自動デプロイ
  3. SVG アイキャッチの OGP 対応

どれも地味だけど、運用していくうえでは大事なやつ。

RSS フィードを真面目に整備した

これまでのRSSは Hugo のテーマ(Stack)デフォルトそのままだったので、テンプレートをオーバーライドして中身をちゃんとした。

  • content:encoded全文HTMLを配信。RSS リーダーでわざわざサイトに飛ばなくても全文読める
  • 各記事のタグを <category> タグとして出力
  • アイキャッチ画像を <enclosure> タグで出力。リーダーがサムネイルとして認識してくれる
  • dc:creator で著者名を出力

Feedly とかで購読すると、ちゃんとした見た目で表示されるようになったはず。

フィードURL: https://new.hide10.com/index.xml

GitHub Actions で push するだけで自動デプロイ

これまではローカルで hugo --minify してから wrangler pages deploy を手動で叩いていた。毎回これをやるのは正直めんどくさい。

そこで GitHub Actions を導入した。仕組みはシンプルで、main ブランチに push すると:

  1. GitHub のサーバーで Ubuntu 仮想マシンが起動
  2. リポジトリを clone
  3. Hugo をインストールしてビルド
  4. wrangler pages deploy で Cloudflare Pages にデプロイ
  5. 仮想マシンを破棄

ローカル PC が起動していなくても、push さえすれば勝手にデプロイされる。GitHub Actions の無料枠は月 2,000 分あるので、個人ブログの更新頻度なら全く問題ない。15,000記事のビルドでも7分程度で終わる。

これで「記事を書く → commit → push」だけでブログが更新される。手動デプロイからの卒業。

SVG アイキャッチの OGP 問題

ついでに、地味に困っていた問題も解決した。アイキャッチ画像が SVG のとき、X や Facebook の OGP(シェア時のサムネイル)で画像が表示されない。OGP は SVG をサポートしていないからだ。

GitHub Actions のビルドステップに「SVG → PNG 自動変換」を追加して対応した。rsvg-convertfeatured.svg を PNG に変換してから Hugo ビルドが走る。記事側は何もしなくていい。

まとめ

RSS、自動デプロイ、OGP対応。全部まとめてやったので一日がかりだったけど、これでブログの運用がだいぶ楽になった。あとは記事を書くだけ ── それが一番大変なんだけど。

B!