GitHub Pages への公開(GitHub Actions)
main ブランチに push するたびに mdBook を自動ビルドして https://<username>.github.io/<repo>/ に公開する仕組みを作ります。
全体の流れ
git push → GitHub Actions が起動
→ mdbook build を実行
→ book/ を GitHub Pages にデプロイ
→ https://<username>.github.io/<repo>/ が更新される
Step 1: GitHub Actions ワークフローを追加
リポジトリに .github/workflows/deploy.yml を作成します(このリポジトリには既に含まれています)。
name: Deploy mdBook to GitHub Pages
on:
push:
branches: [main]
workflow_dispatch: # 手動実行ボタンも有効にする
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install mdBook
env:
MDBOOK_VERSION: "0.4.40"
run: |
curl -sSL "https://github.com/rust-lang/mdBook/releases/download/v${MDBOOK_VERSION}/mdbook-v${MDBOOK_VERSION}-x86_64-unknown-linux-gnu.tar.gz" \
| tar -xz
sudo mv mdbook /usr/local/bin/
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Build
run: mdbook build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./book
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
Step 2: GitHub リポジトリの設定
ワークフローを push する前に、GitHub 側で Pages のソースを「GitHub Actions」に変更します。
- リポジトリページを開く
- Settings タブ → 左サイドバー Pages
- Source を
Deploy from a branchからGitHub Actionsに変更して Save
![Pages設定の場所: Settings > Pages > Source > GitHub Actions]
この設定をしないとデプロイジョブが
Error: HttpError: Not Foundで失敗します。
Step 3: 初回デプロイ
# ワークフローファイルを push する
git add .github/workflows/deploy.yml
git commit -m "ci: add GitHub Pages deployment workflow"
git push origin main
push 後、リポジトリの Actions タブでジョブの進行状況を確認できます。緑のチェックマークが付けば成功です。
公開 URL: https://<username>.github.io/<repository-name>/
動作確認チェックリスト
-
.github/workflows/deploy.ymlがmainブランチに存在する - Settings → Pages → Source が GitHub Actions になっている
-
Actions タブで
Deploy mdBook to GitHub Pagesジョブが成功している - 公開 URL にアクセスしてサイトが表示される
トラブルシューティング
| 症状 | 原因と対処 |
|---|---|
Error: HttpError: Not Found | Pages の Source が GitHub Actions になっていない |
mdbook: command not found | MDBOOK_VERSION の値が古い → Releases で最新バージョンを確認 |
| ページが真っ白 | book.toml の build-dir と upload-pages-artifact の path が一致しているか確認 |
| CSS/JS が 404 | book.toml の [output.html] に site-url の設定が必要な場合あり(サブディレクトリ公開時) |
手動デプロイ(ローカルから)
CI を使わずに手動でデプロイしたい場合は gh-pages ブランチに push する方法もあります。
mdbook build
cd book
git init
git add .
git commit -m "deploy"
git push -f https://github.com/<username>/<repo>.git HEAD:gh-pages
ただし、ワークフローによる自動デプロイの方が手間がなくミスも少ないため、通常は CI を推奨します。