GitHub ActionsでRe:VIEWを自動ビルドする方法【ミジンコ環境向け】
目次
はじめに
いつもブログをご覧いただきありがとうございます。
ミジンコに転生したIPUSIRONです😀
Re:VIEWで作った同人誌の原稿を、ローカルで手動ビルドしてPDFファイルを生成していました。
その一方で、GitHubにpushしたときにGitHub Actionsでビルドが失敗したという通知が毎回届いていました。
同人誌は頒布する上で特に支障はありませんでしたが、気持ちが悪かったのでGitHub Actionsが正常に動作するように修正しました。
この記事では、実際に自動ビルドを成功させた構成を、最小限かつ確実に再現できる形で記録しておきます。
やりたいこと
- Re:VIEW原稿を含むリポジトリにpushしたら、自動でPDFをビルドする。
- 表紙PDFも含めてローカルと同じ出力結果にする。
- GitHub ActionsのArtifactsからダウンロードできるようにする。

前提
- Re:VIEW 5.xでPDF出力する原稿群が"articles"ディレクトリー内にに配置されている。
- 手元ではdocker runコマンドでビルドが成功している。
ミジンコの手動ビルド方法
Ubuntu(WSL)でカレントディレクトリーをarticlesディレクトリーにしておき、以下のdocker runコマンドを実行して手動ビルドしていました。
$ docker run --rm -v `pwd`:/work vvakame/review:5.0 /bin/sh -c "gem install unicode-display_width && cd /work && review-pdfmaker config.yml"
なお、unicode-display_widthをgem intallしている理由は以下の記事で触れています。
ミジンコ仕様のbuild.xml【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実際にやった修正方法【2025年7月時点】
1:デフォルトの".github/workflows/on_push.yml"ファイルをリネームしてバックアップする
Re:VIEW Templateに用意されているGitHub Actionsの定義ファイルは"on_push.yml"ファイルです。
ステップ2で別の定義ファイルを使うので、デフォルトの定義ファイルはバックアップしておきます。
$ git mv .github/workflows/on_push.yml .github/workflows/on_push.yml.bak単純に自動ビルドがうざいだけであれば、ステップ1の作業だけで終わります。
もちろんリネーム後はpushしてください。
2:".github/workflows/build.yml"ファイルを作成する
name: Build Re:VIEW with Docker
on: [push]
jobs:
build:
runs-on: ubuntu-latest
container:
image: vvakame/review:5.8
steps:
- uses: actions/checkout@v3
- name: Install required gem
run: gem install unicode-display_width
- name: Copy cover image
run: cp articles/images/cover-b5.pdf articles/cover-b5.pdf
- name: Build PDF
run: review-pdfmaker config.yml
working-directory: articles
- name: Upload PDF
uses: actions/upload-artifact@v4
with:
name: Book PDF
path: articles/book_Caesar.pdf
cover-b5.pdf が".gitignore"ファイルによって無視される場合でも、GitHub Actionsでのビルドに必要なため、強制的にGitに登録しておきます。
git add -f articles/images/cover-b5.pdf
git commit -m “Add cover-b5.pdf for CI build"
git push
将来の破壊的変更回避のため、GitHub Actionsのバージョン指定を明示しています。
使用しているAction(例:actions/checkout, actions/upload-artifact)は@v4の安定版を使っています。
3:出力物に表紙PDFを含めないように".gitignore"ファイルを調整する
“.gitignore"ファイルに「*.pdf」の指定があると、表紙PDFの"cover-b5.pdf"がGitの管理対象外になってしまいます。
次のように例外指定しておきます。
(略)
*.pdf
articles/*.pdf
!articles/images/cover-b5.pdf
(略)4:成果物(Artifacts)の確認する
GitHub の「Actions」タブから、ビルドが成功しているワークフローを選択します。

画面下部の「Artifacts」セクションから「Book PDF」をダウンロードします。

解凍すると"book_Caesar.pdf"ファイルが得られます。
【おまけ】EPUB出力にも対応させる
Re:VIEWではPDF出力だけでなくEPUB出力もできます。
PDF出力の場合は「review-pdfmaker config.yml」のように実行していましたが、EPUB出力では「review-epubmaker config.yml」のように実行するだけです。
以下はPDF・EPUB両対応版の"build.yml"ファイルです。「Build EPUB」「Upload EPUB」が増えています。
name: Build Re:VIEW with Docker
on: [push]
jobs:
build:
runs-on: ubuntu-latest
container:
image: vvakame/review:5.8
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install required gem
run: gem install unicode-display_width
- name: Copy cover image for build
run: cp articles/images/cover-b5.pdf articles/cover-b5.pdf
- name: Build PDF
run: review-pdfmaker config.yml
working-directory: articles
- name: Build EPUB
run: review-epubmaker config.yml
working-directory: articles
- name: Upload PDF
uses: actions/upload-artifact@v4
with:
name: Book PDF
path: articles/book_Caesar_concise.pdf
- name: Upload EPUB
uses: actions/upload-artifact@v4
with:
name: Book EPUB
path: articles/book_Caesar_concise.epub

PUB出力が不要であればカットしてください。それだけビルド時間を短縮できます。
おわりに
Re:VIEWのビルドをGitHub Actions上で安定させるには、地味ながら正確なパスや".gitignore"フィあるの扱いが鍵になります。
PDF生成だけであれば今回の構成で安定稼働しています。




