優秀な皆さんはもう不要かと思うのですが、僕のように怠惰な人間はまだ卒論が書き終わっておらずいよいよ書き始めなければ厳しくなってくる頃合いとなりました。
加えて進捗を担当教授に見てもらう際に常に最新版のpdfをどこかにアップロードしておけば良いんですが、これがまためんどくさかったり、しょっちゅう忘れたりします。
なので、githubにpushする度に自動でpdfを生成して欲しくなりました。
今回の全てが詰まっているリポジトリはこれです
https://github.com/Im-neko/RG-Thesis-Template
中身は研究室の先輩が弊研究室の卒論用テンプレートを作っていたのでそれをフォークして使っています。
workflowsを書く
自動でコンパイルしたいリポジトリに.github/workflows/main.yml
を作る.github/workflows/main.yml
name: main
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: sh ./paper/repush.sh
texファイル諸々を保存するフォルダを作る
今回はpaperという名前でリポジトリの直下に作っています。
ここにrepush.shというpushされた時に走る「pdfを生成してpushする」shellscriptをおいておきます
paper/repush.sh
#!/bin/bash
cd `dirname $0`
echo `dirname $0`
pwd
ls
git config --global user.name "im-neko"
git config --global user.email "[email protected]"
git remote set-url origin https://im-neko:${GITHUB_TOKEN}@github.com/Im-neko/RG-Thesis-Template.git
git checkout -b master
git pull origin master
git branch -a
git log -1
last_commit_message="$(git log -1 | tail -1)"
echo $last_commit_message
echo $PWD
docker run --rm -v $PWD:/workdir paperist/alpine-texlive-ja:latest platex thesis.tex
docker run --rm -v $PWD:/workdir paperist/alpine-texlive-ja:latest platex thesis.tex
docker run --rm -v $PWD:/workdir paperist/alpine-texlive-ja:latest dvipdfmx thesis.dvi
git add thesis.pdf
git commit -m '[updater] update pdf'
git push origin HEAD
これでpushする度にpdfを生成してpushしてくれるリポジトリの完成です。
texのdockerでのコンパイルやら諸々の仕方については需要がありそうであればまた書きます。