2021年 卒論/修論を学科サービスを使ってビルド・管理するハンズオン
- システム管理チーム
目次
- GitLabとは
- GitLabにプロジェクトを作成しよう
- GitLabにsshの鍵を登録しよう
- GitLabから卒論/修論のテンプレを取ってこよう
- 卒論/修論をGitLabにあげよう
- 実際に学科システムでビルドさせてみよう
こんな経験ないですか?
- MacTeXのインストールでmacOSの容量がかなり埋まった
- TeXのコンパイル時の熱がすごい
- 卒論締め切り前にPCが壊れた
- 間違えてTeXファイルをrmした
- 間違えて適当に書いたTeXファイルで上書きしてしまった
その悩み
GitLabが解決します!!
GitLabとは
- GitHubと同じような機能を持つオープンソース
- GitLab公式が運営しているgitlab.comの他に、自分たちでGitLabサーバーを立ち上げられる
- 名嘉村研なども独自で運用している
- 知能情報コースのサーバー上で可動しているものがgitlab.ie.u-ryukyu.ac.jp
- システム管理チームで管理している
- すでにmattermostのログインツールとして利用している
GitLabとは
- GitHubと同様に、Gitリポジトリを管理したり見やすくしたり出来る
- 学科サーバーで自分のgitリポジトリを管理出来る
- GitHubと違い、公開範囲をかなり細かく制限できる
- 自分だけ
- ログインメンバーのみ(== 学科メンバーのみ)
- 誰でも見れる
- 学科サーバー上で管理しているので、外部公開できない論文でも管理可能
GitLabを使う流れ
- ユーザー設定
- sshの鍵など
- アイコンも変えられます
- リポジトリ(プロジェクト)の作成
これだけ!
- GitHubを使ったことがある人は、ほぼ同じ操作感で使えます
GitLabにsshの鍵を登録しよう
- GitLabに自分の書いたTeXコード/プログラムを保存するには、gitの操作が必要
git push
(リモートにgitリポジトリの変更を送る)など
- 変更を送る場合、HTTPかSSHでpushするかの二択が選択可能
- HTTPの場合、毎回ユーザー名とパスワードを聞かれてしまい、面倒
- SSHを使うとそのあたりが省略できて便利!
GitLabにsshの鍵を登録しよう
- ターミナルを開いて
ls ~/.ssh
したらid_rsa.pub
があるか確認しましょう - もし鍵が見当たらないのであれば
ssh-keygen
と入力します - 質問をしてきますがエンターを押します
- 作成ができたら
cat ~/.ssh/id_rsa.pub |pbcopy
として鍵をコピーしておきましょう
GitLabにsshの鍵を登録しよう
- 右上のユーザーのアイコンをクリックして
Settings
を選択します - 開いたら左の欄に
SSH KEYS
とあるので選択します key
と書いてある欄に先ほどコピーしたものを貼り付けますAdd key
を押します- これで鍵の登録ができました
GitLabから卒論/修論のテンプレを取ってこよう
- 卒論
- 修論 にテンプレートがあります
- 緑色のcloneボタンを押してclone(Gitリポジトリをダウンロード)します
git clone git@gitlab.ie.u-ryukyu.ac.jp:students/k19/master-paper-template.git
- そのあとダウンロードしたディレクトに移動します
cd master-paper-template
- 初期化します
rm -rf .git
gitで管理しよう
- GitLabにあげる準備が整ったので実際にGitで管理します
git init //gitでリポジトリを管理する宣言
git add . //変更内容を追加する
git commit -m "init" //何をしたのかのコメントを残す
学科サーバーでの自動ビルド
自動でビルドをするためにはCI/CDという機能を使います
CI/CDって何
- CI/CDは継続的にインテグレーション.継続的デリバリーと言われるものです
- 簡単にいうとみなさんがpushをした時にGitLab-runnerと言われるものが自動的に作業をしてくれます
- 今回はこれを用いて自動でpdfを出力してくれるようにします
- これを使用するとみなさんがLatexの環境を構築しなくて済むようになります
gitlab-ciの設定をしよう
GitLab CIを使った LaTeXのビルド方法
学科のGitLabにLaTeXのコード一式をcommit, pushすることで、LaTeXのコンパイルを学科サーバー側で行うことができます。 これによりローカルのmacOSにLaTeXの環境をインストールすることなく、レポートや論文を書くことが可能です。
.gitlab-ci.yml
を作成します
- GitLabのCIでビルドを行いますので、リポジトリのトップディレクトリに
.gitlab-ci.yml
を書きます。 - LaTeXのテンプレートを使う場合は変更しなくてOKです
- 別のLaTeXプロジェクトを使う場合は変更する必要があります
- [メインのtexファイル名]はコンパイルしたいLaTeXのファイル名を指定してください
report.tex
,master_paper.tex
など
- [生成されたpdf]は、LaTeXのファイル名と同じです
report.pdf
,master_paper.pdf
- [メインのtexファイル名]はコンパイルしたいLaTeXのファイル名を指定してください
テンプレート
stages:
- build
latexmk:
stage: build
script:
- $HOME/tool/latex.sif latexmk -f [要変更: メインのtexファイル].tex
- git add [要変更: 生成されたpdf]
- git commit -m '[skip ci] generate pdf'
- git push git@gitlab:${CI_PROJECT_PATH}.git HEAD:${CI_COMMIT_BRANCH}
記載例
stages:
- build
latexmk:
stage: build
script:
- $HOME/tool/latex.sif latexmk -f master_paper.tex
- git add master_paper.pdf
- git commit -m '[skip ci] generate pdf'
- git push git@gitlab:${CI_PROJECT_PATH}.git HEAD:${CI_COMMIT_BRANCH}
ビルドフロー
- LaTeXのビルドではsingularity経由でいろいろなツールが使えますが、上の例では
latexmk
を使っています - デフォルトでは、このlatexmkの設定が使われます
- リポジトリのトップに
.latexmkrc
を書くと上書き可能です
- リポジトリのトップに
#!/usr/bin/env perl
$latex = 'uplatex -shell-escape -synctex=1 -halt-on-error';
$latex_silent = 'uplatex -shell-escape -synctex=1 -halt-on-error -interaction=batchmode';
$bibtex = 'upbibtex %O %B';
$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
$dvipdf = 'dvipdfmx %O -o %D %S';
#$makeindex = 'upmendex %O -o %D %S';
$max_repeat = 5;
$pdf_mode = 3;
makeなどのlatexmk以外のコマンドを使いたい場合
- yamlの
$HOME/tool/latex.sif
の後ろに実行したいコマンドを書くと実行可能です git add
の前に書くようにしてください
makeを使う場合
stages:
- build
latexmk:
stage: build
script:
- $HOME/tool/latex.sif make
- git add master_paper.pdf
- git commit -m '[skip ci] generate pdf'
- git push git@gitlab:${CI_PROJECT_PATH}.git HEAD:${CI_COMMIT_BRANCH}
成功した場合
- リポジトリのトップに、yogi猫のアイコンで「
[skip ci] generate pdf
」と表示されていたら、pdfが生成されています
卒論/修論のリポジトリを作成しよう
- 卒論
- 修論
- 自分の卒論/修論を公開するためのプロジェクトを作成する
- その次に画像の右上にある「NewProject」をクリック
- クリックした後にプロジェクト名を入力する
- プロジェクト名は学籍番号