Try   HackMD

GitHub Actions で latexmk を動かして生成された PDF をリリースにぶら下げる

GitHub レポジトリに LaTeX コードが v1 のようなタグでプッシュされたときに、 そのコードを latexmk でビルドして PDF を生成し、それを v1 の名前でリリースに ぶら下げるための GitHub Actions を書きました。

使い方

.github/workflows/release.yml に、次のように書いて push してください。 FILENAME: main のところには LaTeX ファイル名を記入してください。

on: push: tags: - "v*" env: FILENAME: main jobs: release: runs-on: ubuntu-latest container: aruneko/texlive steps: - name: Checkout git repo uses: actions/checkout@v2 - name: Build a PDF file by latexmk run: latexmk $FILENAME.tex - name: Create a release uses: softprops/action-gh-release@v1 with: files: ${{ env.FILENAME }}.pdf

PDF 生成をしたい場合はまず、v から始まるタグをつけて push します:

$ git tag v1 HEAD
$ git push --tags

すると PDF 生成が始まり、成功すれば、新しく生成されたリリースに asset として ぶら下がります。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

実際に動いているこの GitHub レポジトリも参考にしてください。

モチベーション

似たようなものはすでに大量にインターネット 上にありますが、大抵の場合、その著者が作った独自 GitHub レポジトリや独自 Docker イメージに依存しており、メンテナンスが途中で放棄されています。 そこでこの記事では、メンテナンスが継続的に行われている actions/checkout, aruneko/texlive, softprops/action-gh-release のみに依存して workflow を構築します。

[2023年1月4日 追記] 何もしていないのにビルドが失敗するようになった場合の対処法

何もしていないのにビルドが失敗するようになった場合、 使っているイメージの最新バージョンが壊れている可能性があります。この場合、動いていた過去のイメージの SHA256 ハッシュを直接指定することで復旧できます。 例えば、この追記を書いている現時点で aruneko/texlivelatexmk が含まれなくなっており、上の設定ファイルのままではビルドが失敗してしまいます。そこで container の部分を以下に差し替えると、正しく動作します。

    container: aruneko/texlive@sha256:3e42b87810545a1241f0014277c93d47e1b84c74ccf73e91c031976a8f88673b

参考