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している理由は以下の記事で触れています。
実際にやった修正方法
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生成だけであれば今回の構成で安定稼働しています。