GitHub ActionsでRe:VIEWを自動ビルドする方法【ミジンコ環境向け・2026年版】
はじめに
いつもブログをご覧いただきありがとうございます。
ミジンコに転生したIPUSIRONです😀
Re:VIEWのPDFビルドをGit Actionsにさせてしまう戦法です。
build.xmlをさらに改良した
GitHub Actionsでビルド作業から解放されましたが、「同人誌用の新規リポジトリを作成⇒タイトル設定」の際に毎回同じところで失敗します。
この課題を解決するために、config.ymlからbooknameを自動取得するようにしました。
これにより、手動でbuild.yml内のPDFファイル名を変更する必要がなくなります。
なお、GitHub Actionsによるビルド環境構築についての経緯や思想については、過去記事を参照ください。
ミジンコ仕様のbuild.yml【2026年2月版】
name: Build Re:VIEW with Docker
# ────────────────────────────────
# トリガー設定:push時に自動ビルドを実行
# ────────────────────────────────
on: [push]
jobs:
build:
runs-on: ubuntu-latest
# Re:VIEW公式Dockerイメージを使用
container:
image: vvakame/review:5.9
steps:
# ────────────────────────────────
# ① ソースコードをチェックアウト(LFSなし)
# vvakame/reviewコンテナにはgit-lfsが未導入なので、ここではLFSは無効。
# ────────────────────────────────
- name: Checkout
uses: actions/checkout@v4
# ────────────────────────────────
# ② config.ymlからbooknameを自動取得し、config-ebook_pdf.ymlも更新
# - config.ymlのbooknameを唯一の情報源として使用
# - config-ebook_pdf.ymlはCI環境内で一時的に書き換えるだけ
# (リポジトリにはコミットされない。ジョブ終了時に破棄される)
# - 新規プロジェクト作成時はconfig.ymlのbooknameのみ変更すればOK
# ────────────────────────────────
- name: Extract bookname and sync ebook config
run: |
BOOKNAME=$(grep '^bookname:' articles/config.yml | awk '{print $2}')
echo "BOOKNAME=$BOOKNAME" >> $GITHUB_ENV
echo "Detected bookname: $BOOKNAME"
# CI環境内でのみconfig-ebook_pdf.ymlを一時的に更新(リポジトリには影響しない)
sed -i "s/^bookname:.*$/bookname: ${BOOKNAME}_ebook/" articles/config-ebook_pdf.yml
# ────────────────────────────────
# ③ git-lfsをインストールしてLFS実体を取得
# LFSポインタファイル(実体でないテキスト)による画像破損を防ぐ。
# ────────────────────────────────
- name: Install git-lfs and fetch LFS objects
run: |
set -eux
apt-get update
apt-get install -y git-lfs
# コンテナ環境での安全ディレクトリ設定
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git lfs install
git lfs pull
# ────────────────────────────────
# ④ Re:VIEWビルドに必要なgemを追加
# unicode-display_widthは出力時の幅調整に必要。
# ────────────────────────────────
- name: Install required gem
run: gem install unicode-display_width
# ────────────────────────────────
# ⑤ 表紙PDFを所定位置にコピー
# articles/images/cover-b5.pdf → articles/cover-b5.pdf
# ────────────────────────────────
- name: Copy cover image for build
run: cp articles/images/cover-b5.pdf articles/cover-b5.pdf
# ────────────────────────────────
# ⑥ 古い補助ファイルを削除
# 壊れた画像や前回生成済みのxbbを残すとBoundingBoxエラーになるため。
# ────────────────────────────────
- name: Clean aux & old xbb
run: |
set -eux
cd articles
find . -name '*.xbb' -delete
rm -f __REVIEW_BOOK__.* *.aux *.toc *.out *.log || true
# ────────────────────────────────
# ⑦ PNG画像のBoundingBox情報(.xbb)を事前生成
# extractbbコマンドはvvakame/reviewイメージに含まれている。
# ────────────────────────────────
- name: Pre-generate BoundingBox for PNGs
run: |
set -eux
cd articles
if [ -d images ]; then
find images -type f -iname '*.png' -print0 | xargs -0 -I{} extractbb -O "{}"
fi
# ────────────────────────────────
# ⑧ 印刷所入稿用PDF(トンボあり)を生成
# ────────────────────────────────
- name: Build PBOOK_PDF
working-directory: articles
run: review-pdfmaker config.yml
# ────────────────────────────────
# ⑨ 入稿用PDFを成果物としてアップロード
# ────────────────────────────────
- name: Upload PBOOK_PDF
uses: actions/upload-artifact@v4
with:
name: Book PBOOK_PDF
path: articles/${{ env.BOOKNAME }}.pdf
# ────────────────────────────────
# ⑩ 読者配布用PDF(トンボ無し)を生成
# ────────────────────────────────
- name: Build EBOOK_PDF
working-directory: articles
run: review-pdfmaker config-ebook_pdf.yml
# ────────────────────────────────
# ⑪ 配布用PDFを成果物としてアップロード
# ────────────────────────────────
- name: Upload EBOOK_PDF
uses: actions/upload-artifact@v4
with:
name: Book EBOOK_PDF
path: articles/${{ env.BOOKNAME }}_ebook.pdf
# ────────────────────────────────
# ⑫ 失敗時のTeXログがあればアップロード
# LaTeXエラーの原因特定に役立つ(最初の LaTeX Error: 行を確認)。
# ────────────────────────────────
- name: Upload TeX logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: review-logs
path: |
articles/__REVIEW_BOOK__.log
articles/__REVIEW_BOOK__.dvi
articles/__REVIEW_BOOK__.aux
articles/__REVIEW_BOOK__.toc
articles/*.log
if-no-files-found: ignore




