LaTeX ファイルを git push したら PDF をビルドしてアップロードするようにした
概要
bitbucket pipelines を少しさわりました.
背景
論文の共有とかに何を使っていますか?私は git を使っています. Overleaf とか使えばいいんですが,なんだかんだローカル環境のほうがエディタの好みとか合わせて色々やりやすく,指導教員と二人だけのときは git を使っています.
それで,bitbucket 上で D論とか管理して,指導教員と共有していました.
ただ,ちょっと進捗を覗いてもらうには,毎回 pull してビルドしてもらうってのもハードル高いかなと思い,PDFを自動生成してアップロードすると良さそうだと思いました.
という建前と,D論の気分転換ですね.
方法
LaTeX に関することは一切説明しません. yaml についてちょっと知識があるとわかりやすいかもしれないですがどっちでもよいです.
Bitbucket pipeline という自動化ツールを使います.
たぶん github とかでも同じことできるはず(調べてない)
コミット後に latexmk を実行し,できたファイルをアップロードさせれば良いだけです.
具体的には次の3ステップでできます.
- bitbucket-pipelines.yml というファイルを作って以下を書き込みます.
- アプリパスワードを生成します.
- アプリパスワードとそれを生成したアカウント名を環境変数に入れます.
image: ghcr.io/being24/latex-docker:3.2.8 pipelines: default: - step: name: Build the pdf script: - latexmk main.tex --jobname=<NAME> artifacts: - <NAME>.pdf - step: name: Upload script: - pipe: atlassian/bitbucket-upload-file:0.1.2 variables: BITBUCKET_USERNAME: $BITBUCKET_USERNAME BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD FILENAME: '<NAME>.pdf'
コミットすると自動的に動いて,bitbucket.org/USERNAME/REPONAME/downloads/ に PDF がアップロードされます. 以下,それぞれ分かった範囲で説明します.(ほぼ自分用メモ)
bitbucket-pipelines.yml
このファイルは,コミットとかが起こった後に何をするかを記述するファイルと言う感じっぽいです.
image: ghcr.io/being24/latex-docker:3.2.8
環境が入った docker image をロードする感じです.ググって出てきたイメージを適当に使いました.
pipelines: default:
しらべてない,おまじない
- step: name: Build the pdf script: - latexmk main.tex --jobname=<NAME> artifacts: - <NAME>.pdf
step はコンパイルとかの1単位という感じ?
name は好きなものを設定してください.後で今どこまで終わったかの確認くらいしか使わないです.
script 以降にコンパイル方法を指定すればよいです.私の環境だと latexmkrc にすべて書いているので,これだけで良いです. platex とかでコンパイルしているなら,
script: - platex main.tex - pbibtex main.aux - platex main.tex - platex main.tex - dvipdfmx main.dvi
とかで行けるんじゃないんですかね(てきとう)
artifacts: - <NAME>.pdf
生成されるpdf ファイルの名前を入れておくとよいです,あとのアップロードのために宣言してるっぽい?おまじない.
- step: name: Upload script: - pipe: atlassian/bitbucket-upload-file:0.1.2 variables: BITBUCKET_USERNAME: $BITBUCKET_USERNAME BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD FILENAME: '<NAME>.pdf'
↓参照.<NAME>.pdf をアップロードしてくれます. support.atlassian.com
ところで,ここで - $BITBUCKET_USERNAME - $BITBUCKET_APP_PASSWORD という項目が出てきました.これはアップロードに必要な認証用のユーザ名,パスです.以下でこれを設定法を書きます.
これらは,リポジトリの設定画面から,環境変数のところに飛ぶと設定できます.
BITBUCKET_APP_PASSWORD
個人設定画面からアプリパスワードを生成します. そこで出てきたパスキーをコピーして貼っ付ければよいです.
BITBUCKET_USERNAME
ユーザー名を入れてください.個人設定からも見れるはず.
future work
Slack にできた pdf 自動アップロードとかしたら面白そうだけど,単なる通知以上はめんどそうなのであきらめた
てかわたしの個人ページでこれをやりましょう
あとがき
久々にこういうのさわったけど,ちょっとおもしろいね