--- breaks: false tags: public-tech --- # GitHub Actions で latexmk を動かして生成された PDF をリリースにぶら下げる GitHub レポジトリに LaTeX コードが `v1` のようなタグでプッシュされたときに、 そのコードを `latexmk` でビルドして PDF を生成し、それを `v1` の名前でリリースに ぶら下げるための GitHub Actions を書きました。 ## 使い方 `.github/workflows/release.yml` に、次のように書いて `push` してください。 `FILENAME: main` のところには LaTeX ファイル名を記入してください。 ```yaml= 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 として ぶら下がります。 ![](https://i.imgur.com/xPqPyfE.png) 実際に動いている[この GitHub レポジトリ](https://github.com/ushitora-anqou/test_github_actions_latex)も参考にしてください。 ## モチベーション 似たようなものはすでに大量にインターネット 上にありますが、大抵の場合、その著者が作った独自 GitHub レポジトリや独自 Docker イメージに依存しており、メンテナンスが途中で放棄されています。 そこでこの記事では、メンテナンスが継続的に行われている actions/checkout, [aruneko/texlive](https://github.com/aruneko/texlive), [softprops/action-gh-release](https://github.com/softprops/action-gh-release) のみに依存して workflow を構築します。 ## [2023年1月4日 追記] 何もしていないのにビルドが失敗するようになった場合の対処法 何もしていないのにビルドが失敗するようになった場合、 使っているイメージの最新バージョンが壊れている可能性があります。この場合、動いていた過去のイメージの SHA256 ハッシュを直接指定することで復旧できます。 例えば、この追記を書いている現時点で `aruneko/texlive` に `latexmk` が含まれなくなっており、上の設定ファイルのままではビルドが失敗してしまいます。そこで `container` の部分を以下に差し替えると、正しく動作します。 ``` container: aruneko/texlive@sha256:3e42b87810545a1241f0014277c93d47e1b84c74ccf73e91c031976a8f88673b ``` ## 参考 - https://github.com/tsukuba-mas/platex-action - https://zenn.dev/junkato/articles/github-actions-to-generate-pdfs-for-pages