GithubActionsを用いて、TeXで作成したpdfドキュメントのバージョン管理をする

#概要
GitHub ActionsでTeXファイルをコンパイルしてリリースしたいと思って作りました。
これによってTeXファイルだけでなく、pdfドキュメントもバージョン管理できるようになります。
参考までに[パブリックレポジトリ](https://github.com/ahalcyon/tex_to_release-pdf)を作りました。

#ファイルツリー
```
.
├── .github
│   ├── actions
│   │   ├── Dockerfile
│   │   └── entrypoint.sh
│   └── workflows
│       └── build.yaml
├── .latexmkrc
└── main.tex
```
以下本仕組みに関わるファイルのみ紹介します。
#workflow
```yaml:build.yaml
name: compile LaTeX and release PDF

# トリガーは*.*.*のタグが付いたコミットがpushされた時
on:
  push:
    tags:
      - '*.*.*'

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Set up Git repository
        uses: actions/checkout@v2
      # TeXをcompile
      - name: compile latex document
        uses: ./.github/actions
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      # リリースを作成
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          draft: false
          prerelease: false
      # compileしたpdfをアップロード
      - name: Upload Release Asset
        id: upload-release-asset
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./main.pdf
          asset_name: main.pdf
          asset_content_type: pdf
```
#Dockerfile

DOckerはコンテナ建ててコンパイルしてpdf吐き出すだけ

```dockerfile:Dockerfile
FROM ubuntu:latest
RUN apt-get update \
  && apt-get install -y tzdata
RUN apt-get install -y --no-install-recommends \
    curl \
    python3 \
    latexmk \
    lmodern \
    texlive \
    texlive-latex-extra \
    texlive-lang-japanese \
  && rm -rf /var/lib/apt/lists/*

RUN mktexlsr && mkdir -p /app
WORKDIR /app
ADD entrypoint.sh /entrypoint.sh
RUN ["chmod", "+x", "/entrypoint.sh"]
ENTRYPOINT ["/entrypoint.sh"]
```
```shell:entrypoint.sh
#!/bin/bash
set -eux
# build pdf
latexmk -pdfdvi main.tex
```

これで`*.*.*`の形式でタグを付けたコミットをpushするとpdfが生成され、releaseされることになります。

#追記

@peaceiris さんから下記のアドバイスを頂きました
>`actions/create-release` と `actions/upload-release-asset` はもうメンテされていないため `gh command` (cli/cli: GitHub’s official command line tool) などに移行するのがオススメです。

そのため、workflowの`actions/create-release`と`actions/upload-release-asset`を`softprops/action-gh-release`に変更し書き直しました。

```yaml:build.yaml
name: compile LaTeX and release PDF

on:
  push:
    tags:
      - '*.*.*'

jobs:
  build:
    name: Build
    runs-on: ubuntu-20.04
    steps:
      - name: Set up Git repository
        uses: actions/checkout@v2
      - name: compile latex document
        uses: ./.github/actions
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Create Release & upload asset
        id: create_release-upload_assets
        uses: softprops/action-gh-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          files: ./main.pdf
          draft: false
          prerelease: false
```

こっちのほうがスッキリしますね。
そしてactionもこっちのほうが20%ほど速かったです。

@peaceiris さんありがとうございました!