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.pdfthesis.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_PATmaxheld83/ghpages@v0.2.1に与えた変数名), Valueにコピーしたtokenを貼り付けます.

以上を終えたあと これでGithubにPushをするたびにCIが走り, https://username.github.io/repository_name以下にthesis.pdfへのリンクがはられたindex.htmlが配置され, インターネットに公開されます.

やったね.

もしうまく行かなかった ここのコメント欄か twitter.com までお知らせを

2017年 振り返り

今年も年の瀬ですね、今年はいろいろなことがありました。

1月

1月か2月にはスノボに行きました。あれ何時だっけ?長野の空はきれいだった。星空鑑賞のプロに星座を教えてもらった。

2月

あと2月に関西に行きました。一週間ぐらい行きました。西村屋本館はすごい良かったですね。一泊3万超えるぽい。内湯に1人で入れました。やったぜ。カニも美味かった。

3月

焼肉をおごってもらった。 春休みはあまり記憶がありませんね、お金がなかった記憶だけが残っています。3月に北海道に行きました。人生2回目の飛行機です。知床はめちゃくちゃきれいでした。

4月

4月にはIdeinにアルバイトとして入社しました。強い人がたくさんいて勉強になった。

5月

yoloで遊んでいた。

6月

LTE社からGPUを頂き、研究ができるようになった。焼肉をおごってもらった。

7月

ICPCに出た。 DeNAに応募した気がする。

8月

8月から9月にはDeNAインターンをしていました。フルタイム勤務辛い。期間中は10畳9人のシェアハウスに住んでいました。いろいろな人がいた。最終日には誕生日を祝ってもらえてよかったです。

9月

インターン後にはSensetimeのインターンに応募して落ちた。英語のインタビュー意味わからん。何も喋れなかった。

10月

10月以降は何をやっていたのかよく覚えていない。 授業や仕事に追われていた気がする。外交や経済を勉強していた気がする。

11月

焼肉をおごってもらった

12月

12月には今年も本屋へ行ってたくさん本を買った。 ICPCAsia Regionに出場しました。辛い。 そしてSensetime Japanに応募しました。年明けにインタビューをします。

今年の反省

昨年度に比べて忙しくなり、自分の研究や勉強に割ける時間が少なかったです。大学の授業で週に3,4冊参考文献を読んでいたのは良かったがそれ以外の本はアドベントカレンダー以外のときには読んでいなかった気がします。 いろいろなことと決別ができるようにしたい。 インターンに行きたい。

本25

これは本 Advent Calendar 2017 - Adventar 25日目の記事です。

本日はアドベントカレンダー最終日です。今年も去年に引き続き、1人アドベントカレンダーをやってまいりました。中々時間が取れなかったり、遅れてしまうことがあるなか、少なくとも最終日の記事を間に合わせることができたのは良かったです。

一年の振り返りは年末にやろうと思うので25日目の記事では今まで読んできた本を紹介します。

広辞苑を読む』ー 柳瀬尚紀の追悼記念で読んだ。頭が良い。

『英語で大学が亡びるとき』ー 明治以降、知識人、学者たちの血の滲むような努力の結果、日本語で学問を出来るようなったことは覚えておくべき

『型システム入門』ー また読む

『世界で闘うプログラミング力を鍛える150問』ー 面接対策のために読んだ。買った

機械学習のための確率と統計』ー 不等式は重要

『計算理論の基礎』ー オートマトンは有用

国立国語研究所「日本大語誌」構想の記録』ーこれ復活させたい

『ダメな統計学』ー 僕もだめだめだった

Unixパワーツール』ー Unixが使えるようになった。有用。

帝国大学』ー 日本の大学の欠点の原因がここにあったとは

『スーパーコンピュータを創った男』ー クレイ頭おかしい。斎藤さんも頭おかしい。

『論理トレーニング101題』ー 頭が良くなった気がする

日露戦争、資金調達の戦い』ー 高橋是清偉大

『インベストメント.』ー 投機を始めた

『現代官僚論』ー 公務員は国のために頑張っている

『論理学をつくる』ー 時間がかかる

赤池情報量規準AIC』ー 赤池氏生誕記念

こんな感じですね。今年の残り一週間頑張っていきましょう。

本25

これは本 Advent Calendar 2017 - Adventar 25日目の記事です。

本日はアドベントカレンダー最終日です。今年も去年に引き続き、1人アドベントカレンダーをやってまいりました。中々時間が取れなかったり、遅れてしまうことがあるなか、少なくとも最終日の記事を間に合わせることができたのは良かったです。

一年の振り返りは年末にやろうと思うので25日目の記事では今まで読んできた本を紹介します。

広辞苑を読む』ー 柳瀬尚紀の追悼記念で読んだ。頭が良い。 『英語で大学が亡びるとき』ー 明治以降、知識人、学者たちの血の滲むような努力の結果、日本語で学問を出来るようなったことは覚えておくべき 『型システム入門』ー また読む 『世界で闘うプログラミング力を鍛える150問』ー 面接対策のために読んだ。買った 『機械学習のための確率と統計』ー 不等式は重要 『計算理論の基礎』ー オートマトンは有用 『国立国語研究所「日本大語誌」構想の記録』ーこれ復活させたい 『ダメな統計学』ー僕もだめだめだった 『Unixパワーツール』ーUnixが使えるようになった。有用。 『帝国大学』ー日本の大学の欠点の原因がここにあったとは 『スーパーコンピュータを創った男』ークレイ頭おかしい。斎藤さんも頭おかしい。 『論理トレーニング101題』ー頭が良くなった気がする 『日露戦争、資金調達の戦い』ー高橋是清偉大 『インベストメント.』ー投機を始めた 『現代官僚論』ー公務員は国のために頑張っている 『論理学をつくる』ー時間がかかる 『赤池情報量規準AIC』ー赤池氏生誕記念

こんな感じですね。今年の残り一週間頑張っていきましょう。

本24 数学:物理を学び楽しむために

これは本 Advent Calendar 2017 - Adventar 24日目の記事です。

面接の前に微分を勉強した。この本は少しずつ読み進めていきたい。今まで読んだ数学の本で一番丁寧

本23 Deeper Depth Prediction with Fully Convolutional Residual Networks

これは本 Advent Calendar 2017 - Adventar 23日目の記事です。

今回も残念ながら本ではないです。

Up Projectionがよく分かっていない。 Huber lossを使っているCNNを初めてみたのでどんな効果があるんだろうと思った

ちゃんと読めていないですね