Github Actionsで卒論CIを作る.
皆さん, 卒論の時期ですね. 僕は卒論の時期です.
LaTeXで文章を書いていて困ることgitでバージョン管理しているはずなのにいろんなバージョンのPDFがパソコンに散らばってしまうことですよね. 私はよくやります.間違えて古いPDFを添削してくれる人に送ってしまったこともあります.
そんなときはGithub Actionを使ってpushするたびにコンパイルをしてgithub pagesにアップロードしてもらいましょう. urlが毎回同じなので添削者にurlを渡しておけばいつでも最新版のPDFを確認してもらえます.
これを読んでやろうとしたら仕様が変わったのかうまく動かなかったのでメモとして書きます. qiita.com
github actions
github actionsの利用申請をするとできます.
リポジトリ
卒論のテンプレートがあるのでforkなりcloneなりします. github.com
gh-pagesというブランチをはやしましょう.
Github ActionsのCIでlatexmkを使ってコンパイルするのでMakefileを書き換えます
#!/usr/bin/env perl @default_files = ('thesis.tex'); $latex = 'platex -synctex=1 -halt-on-error'; $latex_silent = 'platex -synctex=1 -halt-on-error -interaction=batchmode'; $bibtex = 'pbibtex'; $biber = 'biber --bblencoding=utf8 -u -U --output_safechars'; $dvipdf = 'dvipdfmx %O -o %D %S'; $makeindex = 'mendex %O -o %D %S'; $max_repeat = 5; $pdf_mode = 3; $pvc_view_file_via_temporary = 0;
これでだいたい同じように動くはずです.
続いて,
workflow
GithubのrepositoryのActionsにページに行くとNew workflow
を押すと
.github/workflows/
以下にymlファイルが生まれます.
これをよしなに名前を変更して,
name: CI on: push: branches: - master jobs: latex: runs-on: ubuntu-latest steps: - name: Set up Git repository uses: actions/checkout@v1 - name: Compile and Deploy LaTeX to PDF uses: raven38/uberblatt-action@v11 - name: GitHub Pages Deploy uses: maxheld83/ghpages@v0.2.1 env: BUILD_DIR: "build/" GH_PAT: ${{ secrets.GH_PAT }}
とします.
raven38/uberblatt-action@v11
はDockerfile上にLaTeXの環境を作りbuildディレクトリ以下にgh-pages用にthesis.pdf
と
thesis.pdf
へのリンクがはられたindex.html
を配置します.
maxheld83/ghpages@v0.2.1
ではBUILD_DIRを指定してそのディレクトリ(ここではbuild
)以下のファイルをgh-pagesにコミットします.
GH_PATはgithub actionsがリポジトリへのアクセスのためのトークンで,
Githubの右上のユーザアイコンからSettings
-Developer Settings
-Personal access tokens
へと移動し,
Generate new token
を押下します.
tokenの名前をよしなに設定しrepo
パーミッションにチェックを入れてtokenを生成します.
tokenをコピーし, 次はリポジトリのSettings
-Secrets
へ移動します.
Add a new secrets
を押下し, 名前にGH_PAT
(maxheld83/ghpages@v0.2.1
に与えた変数名), Valueにコピーしたtokenを貼り付けます.
以上を終えたあと
これでGithubにPushをするたびにCIが走り,
https://username.github.io/repository_name
以下にthesis.pdf
へのリンクがはられたindex.html
が配置され, インターネットに公開されます.
やったね.
もしうまく行かなかった ここのコメント欄か twitter.com までお知らせを