当サイトの一部ページには、アフィリエイト・アドセンス・アソシエイト・プロモーション広告を掲載しています。

Amazonのアソシエイトとして、Security Akademeiaは適格販売により収入を得ています。

広告配信等の詳細については、プライバシーポリシーページに掲載しています。

消費者庁が、2023年10月1日から施行する景品表示法の規制対象(通称:ステマ規制)にならないよう、配慮して記事を作成しています。もし問題の表現がありましたら、問い合わせページよりご連絡ください。

参考:令和5年10月1日からステルスマーケティングは景品表示法違反となります。 | 消費者庁

GitHub ActionsでRe:VIEWを自動ビルドする方法【ミジンコ環境向け・2026年版】

はじめに

いつもブログをご覧いただきありがとうございます。

ミジンコに転生したIPUSIRONです😀

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

同人誌Re:VIEW同人誌

Posted by ipusiron