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を使う流れ

  1. ユーザー設定
    • sshの鍵など
    • アイコンも変えられます
  2. リポジトリ(プロジェクト)の作成

これだけ!

  • 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

テンプレート

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」をクリック
  • クリックした後にプロジェクト名を入力する
    • プロジェクト名は学籍番号

w:1000 center

コメント:画像を中央に配置する centerコマンドを有効に