🚀 はじめに:この記事で学べること

本記事では、Hugo + GitHub Pages でブログを運用している初心者の方向けに、
GitHub Actions を使って自動デプロイする仕組みを、できるだけ分かりやすく解説します。

  • GitHub Actions が何をしているのか
  • Hugo のビルドがどのように自動化されるのか
  • gh-pages ブランチへ自動デプロイされる仕組み
  • 実際に使えるワークフローのテンプレート

補足
「自動デプロイ」は、記事を更新するたびに手動で hugogit pushgh-pages へ反映…という作業をなくすための仕組みです。


🧱 Step 1:GitHub Actions の基本を理解する

GitHub Actions は、GitHub が提供する 自動実行の仕組み(CI/CD) です。

🔧 何が自動化されるのか?

  • Hugo のインストール
  • サイトのビルド(hugo コマンド)
  • public/ の生成
  • gh-pages ブランチへのデプロイ

これらを YAMLファイル(ワークフロー) に書いておくことで、GitHub が自動で実行してくれます。


📁 Step 2:ワークフローの配置場所を知る

GitHub Actions の設定ファイルは、リポジトリ内の以下に置きます。

.github/workflows/deploy.yml

注意
ディレクトリ名 .github/workflows/ を間違えると、GitHub Actions が認識しません。


⚙️ Step 3:Hugo 自動デプロイ用ワークフローの例

以下は、Hugo サイトを GitHub Pages に自動デプロイする最小構成の例です。

name: Deploy Hugo site

on:
  push:
    branches:
      - main   # main ブランチに push されたら実行

jobs:
  build-deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: "latest"   # Hugo のバージョン

      - name: Build
        run: hugo --minify         # サイトをビルド

      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public    # Hugo の出力先
          publish_branch: gh-pages # デプロイ先ブランチ

🔍 このワークフローがやっていること

ステップ内容
checkoutリポジトリの内容を取得
setup HugoHugo をインストール
buildhugo を実行して public/ を生成
deploypublic/gh-pages に push

補足
peaceiris/actions-gh-pages は GitHub Pages へのデプロイで最もよく使われる Action です。


🏁 Step 4:GitHub Pages の設定を確認する

GitHub リポジトリの Settings → Pages を開き、以下のように設定します。

  • Source:Deploy from a branch
  • Branchgh-pages / (root)

注意
gh-pages ブランチが存在しない場合、初回デプロイ後に自動生成されます。


🧪 Step 5:実際に動かしてみる

  1. main ブランチに記事を追加
  2. git push
  3. GitHub Actions が自動でビルド
  4. 数十秒後、gh-pages にデプロイ
  5. GitHub Pages が更新される

補足
Actions の実行ログは Actions タブ から確認できます。
エラーが出た場合は、どのステップで失敗したかを確認しましょう。


🧯 よくあるつまずき(チェックリスト)

  • .github/workflows/ の場所が正しいか
  • baseURL が公開URLと一致しているか
  • gh-pages ブランチが GitHub Pages の Source に設定されているか
  • Hugo のバージョン指定が正しいか
  • public/ が正しく生成されているか

📚 参考リンク


🔧 拡張案(次にやると良いこと)

  1. GitHub Actions のキャッシュ最適化
    • Node.js や Hugo のキャッシュを使ってビルド高速化
  2. マルチ環境デプロイ
    • ステージング環境と本番環境を分ける
  3. Lint / Link Checker の追加
    • 記事の品質チェックを自動化
  4. 画像最適化パイプラインの導入
    • WebP 生成やリサイズを自動化
  5. PR 時のプレビュー生成
    • Netlify や Cloudflare Pages と組み合わせてプレビューを自動生成

✅ まとめ

  • GitHub Actions を使えば、Hugo サイトのデプロイを完全自動化できる
  • ワークフローは .github/workflows/ に配置
  • hugopublic/gh-pages の流れを自動化するだけ
  • GitHub Pages の設定と合わせて使うと、更新がとても楽になる