第 164 回 東京エリア Debian 勉強会資料.Deb
銀河系唯一のDebian専門誌
2018 年 6 月 16 日

git
料
資勉強会

デビアン勉強会

目次

2.9

NOKUBI Takatsugu

. . .

3

2.10

Horie Issei . . . . . . . . .

3

2.11

くのきみ

. . . . . . . . . .

3

最近の Debian 関連のミーテ

1

ィング報告

1.1

2

強会の Web/原稿システムの第 163 回東京エリア Debian
勉強会 . . . . . . . . . . . .

2

参加者の紹介3

2.1

Roger Shimizu . . . . . . .

3

2.2

koedoyoshida. . . . . . .

3

2.3

yy y ja jp. . . . . . . . .

3

2.4ysaito . . . . . . . . . . . .

3

2.5

BurnDuck (nabaua) . . . .

3

2.6

kenhys. . . . . . . . . . .

3

2.7Charles Plessy . . . . . . .

3

2.8dictoss

32

salsa と東京エリア debian 勉

3. . . . . . . . . . .

1

4

仕組み

4

3.1

はじめに . . . . . . . . . . .

4

3.2

東京エリア Debian 勉強会のシステム . . . . . . . . . . .

4

3.3

salsa.debian.org . . . . . . .

4

3.4

東京エリア Debian 勉強会のsalsa のシステム . . . . . . .

73.5

今後の課題 . . . . . . . . . .

93.6

まとめ . . . . . . . . . . . .

9メモ

10

第 164 回 東京エリア Debian 勉強会 2018 年 6 月

1 最近の Debian 関連のミーティング報告
dictoss

1.1 第 163 回東京エリア Debian 勉強会
2018 年 5 月 19 日 (土) に第 163 回東京エリア Debian 勉強会を開催しました。会場は東銀座にある朝日ネットさんをお借りして行いました。参加者は 2 名でした。
セミナー発表はなく、各自持ち寄った課題をハックしました。

2

第 164 回 東京エリア Debian 勉強会 2018 年 6 月

2 参加者の紹介
dictoss

今回の勉強会の参加者は以下です。他の参加者の方々へ自己紹介をしましょう。

2.1

Roger Shimizu

2.2

koedoyoshida

2.3

yy y ja jp

2.4ysaito

2.5

BurnDuck (nabaua)

2.6

kenhys2.7

Charles Plessy

2.8dictoss

2.9

NOKUBI Takatsugu

2.10

Horie Issei

2.11

くのきみ

3

第 164 回 東京エリア Debian 勉強会 2018 年 6 月

3 salsa と東京エリア debian 勉強会の Web/原稿システムの仕組み
杉本典充

3.1 はじめに東京エリア debian 勉強会では、勉強会を運営するにあたり web サイトと勉強会の発表資料である原稿データとスライドデータを扱っています。これらのデータは勉強会の議論を深めたり記録として重要な資産になっています。
東京エリア Debian 勉強会の資料の保存先を salsa.debian.org へ移行したため、資料を処理する仕組みと salsaへの移行作業について報告します。

3.2 東京エリア Debian 勉強会のシステム
東京エリア Debian 勉強会では、運営を行うにあたり以下のシステムを利用しています。

• web サイト「https://tokyodebian-team.pages.debian.net/」*1• 発表者の原稿データ、スライドデータを処理する tex の原稿システム*2• 参加者申し込みとして外部サービス「connpass」*3• DebianJP のメーリングリスト（勉強会の告知、相談、質問の窓口）
salsa を利用しているのは、web サイトと原稿データのファイル管理を行う必要な処理となります。

3.3 salsa.debian.org
3.3.1 salsa とは
salsa とは、Debian プロジェクトが salsa.debian.org として運用している開発者向けのプロジェクト管理サーバです。gitlab をインストールしたサーバになっており、現代の git を使ったワークフローや Kubernetes(k8s) と連携して CI/CD を実行する機能を持っています。

3.3.2 alioth から salsa への移行
Debian プロジェクトでは 2003 年から alioth.debian.org というプロジェクト管理サーバを運用していました。
alioth は FusionForge*4 という OSS の web ベースなプロジェクト管理ツールをサービスするホストであり、web サー*1 リポジトリは、https://salsa.debian.org/tokyodebian-team/tokyodebian-team.pages.debian.net*2 リポジトリは、https://salsa.debian.org/tokyodebian-team/monthly-report*3 https://connpass.com/*4 http://www.fusionforge.org

4

バ・wiki・メーリングリスト・CVS/SVN/GIT のリポジトリをサービスしていました*5 。
しかし、FusionForge は 2016 年 12 月 10 日に fusionforge-6.0.5 をリリースしてから開発が滞る状況になります。

alioth サーバは Debian 7 (wheezy) に FusionForge をインストールして運用していましたが、アプリケーションの更新が止まったことから alioth を今後どうしていくか議論が始まりました。

2017 年 8 月 17 日に Alioth Sprint 2017 を行い*6 、gitlab をベースにした alioth の後継サーバのプロトタイプを実装し*7 、サーバ名を”salsa”と呼称することになります。

salsa は 2017 年 12 月 15 日にベータ運用に入り*8 、2018 年 1 月 27 日にベータ運用を終了し本稼働を開始しました*9 。
そして、2018 年 5 月 31 日の Debian 7 (wheezy) LTS の終了とともに alioth サーバはサービスを終了し、その機能を salsa へ引き継ぎました。

3.3.3 salsa の利用の仕方
ドキュメントsalsa のドキュメントは以下にあります。Doc のページにアカウントのセットアップからチームの作成までの流れが書いてあります。そのほか、gitlab のドキュメントを参照ください。

• https://wiki.debian.org/Salsa/• https://wiki.debian.org/Salsa/Doc• https://docs.gitlab.com/
アカウントの登録salsa は Debian Developer のユーザ管理を行う LDAP サーバと連携しています。そのため、Debian Developer の方は debian.org のメールアドレスを利用して salsa へログインできます。

Debian Developer 以外の方は、https://signup.salsa.debian.org/ のページで salsa のゲストアカウントを作成できます。このとき、ユーザアカウント名は”-guest”という文字列を末尾に含める命名規則になっています。
チームの作成gitlab ではまず「チーム」というユーザのグループをつくり、チームの配下にプロジェクト群をつくる形になっています。

https://signup.salsa.debian.org/ のページでチームを作成できます。チームの作成は Debian Developer 以外の方でも可能です。チーム名は、”-team”という文字列を末尾に含める命名規則になっています。
チームを作成すると、例えば https://salsa.debian.org/tokyodebian-team のような URL でチームのページにアクセスできるようになります。
なお、チームを作成したユーザは初期設定でチームの Owner 権限を持ちます。
チームへのメンバの参加*5 https://wiki.debian.org/Alioth/FAQ#FusionForge*6 https://wiki.debian.org/Sprints/2017/Alioth*7 https://wiki.debian.org/Salsa*8 salsa.debian.org (git.debian.org replacement) going into beta https://lists.debian.org/debian-devel-announce/2017/12/msg00003.html*9 salsa.debian.org updates (leaving beta) https://lists.debian.org/debian-devel-announce/2018/01/msg00004.html

5

salsa に存在するユーザアカウントをチームに追加することでプロジェクトの参加者を増やすことができます。ユー
ザの追加は、チームの Owner または Master の権限を持っているユーザが操作できます。
な お ユ ー ザ 権 限 は https://docs.gitlab.com/ee/user/permissions.html に 一 覧 が あ り、Owner、Mas-

ter*10 、Developer、Reporter、Guest の権限があります。
また、自分がとあるチームへ参加したい場合は、salsa へログインした状態でチームのトップページにある「アクセス権限をリクエストする」ボタンを押下してください。するとチームへの追加依頼がチームの管理者へ通知され、許可されればチームのメンバに追加されます。
プロジェクトの作成（＝ git リポジトリの作成）
チームのページの右上にある「＋」マークの部分をクリックすると表示するメニューからプロジェクトを作成できます。
プロジェクト 1 つにつき git リポジトリ 1 つを持つことができます。そのため、複数の git リポジトリで構成するプロジェクトの場合は、チームが複数のプロジェクトをもつようにすることで実現できます。

CI/CDgitlab は CI（Continuous Integration）や CD（Continuous Delivery）の機能を備えています。
ユーザが git リポジトリへ push したタイミングや webhook*11 という仕組みを利用して CI/CD の処理を実行できます。主にユニットテストの自動実行や運用サーバへコミットしたファイルの自動配備、チャットへの通知などの処理を行うことが考えられます。

gitlab の CI/CD 処理は、”Runner”という Kubernetes(K8s) のインスタンスへ処理をリクエストする仕組みになっています。Runner には、3 つの種類があります*12 。

• Shared Runners*13– gitlab サーバの全チーム、全プロジェクト共用の汎用 Runner。
– Kubernetes のバージョンやインスタンスを問わず実行してよい場合はこれを指定する。
• Group Runners– 1 つのチーム内のプロジェクト群のみで占有して利用できる汎用 Runner。
• Specific Runners– 1 つのチーム内のプロジェクト群のみで占有して利用できる環境依存向け Runner。
– Runner の動作環境に応じて 1 つまたは複数のタグを設定する。
– git リポジトリの”.gitlab-ci.yml”の tags キーにタグを指定すると、指定したすべてのタグをもつ Specific
Runner へ CI/CD 処理の実行をリクエストする。
gitlab の CI/CD は機能や設定項目も多いため、GitLab のマニュアル*14 を参照してください。
ユーザ個人ページの設定
ユーザの個人設定ページにある「SSH Keys」ページから SSH 鍵を登録することができます。

SSH 鍵を登録しておくと、git の pull や push 時の認証でアカウントの入力をせずに済むため作業が効率化するでしょう。

*10 https://docs.gitlab.com/ee/user/permissions.html のマニュアルでは Maintainer になっていますが、salsa では Master になっています。
*11 https://docs.gitlab.com/ee/user/project/integrations/webhooks.html*12 https://docs.gitlab.com/ee/ci/runners/*13 Runner のサーバは不足しているためスポンサーを募集中です。https://wiki.debian.org/Salsa/Doc#Quick_start*14 https://docs.gitlab.com/ee/ci/README.html

6

salsa の git リポジトリへ pull、push するユーザのホストには、以下の ssh の接続設定をしておくとよいです。
$ cat ~/.ssh/config
Host salsa.debian.org
User youraccount-guest
IdentityFile ~/.ssh/id_rsa.yoursalsakey

3.4 東京エリア Debian 勉強会の salsa のシステム
3.4.1 alioth から salsa への移行の設計と作業内容
東京エリア Debian 勉強会（及び関西 Debian 勉強会）では、alioth.debian.org にある git リポジトリ及び静的ファイルの web 公開機能を使っていました。

2018 年 5 月に alioth サーバが停止するため、salsa へ git リポジトリと web サイトを移行するよう計画しました。
システム移行の設計と実施する作業は以下 URL にまとめています。

• https://wiki.debian.org/tokyodebian_salsa_migrate

3.4.2 ファイルのライセンス
東京エリア Debian 勉強会の git リポジトリに収録しているファイルは、alioth に配置している時代からライセン
スに GPLv2（または GPLv3）を適用するルールとしています。勉強会に参加いただく方にはライセンスをご理解の上、コミットやパッチの提供をお願いいたします。

3.4.3 チームとメンバ
東京エリア Debian 勉強会では、「tokyodebian-team」というチーム名にしています*15 。歴史的に alioth のプロジェクト名が”tokyodebian”になっていたため、そのまま引き継いでいます。*16

tokyodebian-team のメンバの権限をどう割り当てるかのポリシーは定めておらず、Owner 権限を持つ方々に裁量を委ねる運用にしています。

git リポジトリへのコミット権は不要で、原稿データやスライドデータを patch で提供していただける方は、東京エリア Debian 勉強会の web サイトに「発表資料更新/提出方法」*17 というページがありますのでご参照いただき、patch を送信してください。
3.4.4 静的ファイル公開機能:Pages
salsa の静的ファイルを web 公開する「Pages」*18 という機能があります。
Pages の機能では”https://{namespace}.pages.debian.net/{project}”という URL で静的ファイルの web を公開できる仕様になっており、namespace の部分にはチーム名が入ります。特例として、URL のホスト名と同名のプロジェクトを作った場合は project 部分のディレクトリを省略した URL を利用できます。これによりプロジェクト名を「tokyodebian-team.pages.debian.net」にすることで、Pages で公開する URL を「https://tokyodebian-team.

pages.debian.net/」にできます。
3.4.5 web サイトの仕組み
東京エリア Debian 勉強会の web サイトのソースコードは、https://salsa.debian.org/tokyodebian-team/tokyodebian-team.pages.debian.net のページにあります*19 。

*15 https://salsa.debian.org/tokyodebian-team*16 原稿システム部分については関西 Debian 勉強会の方々も共用しており、tokyo に限らずみなさん利用できます。
*17 https://tokyodebian-team.pages.debian.net/prework-update.html*18 https://wiki.debian.org/Salsa/Doc#Web_page_hosting*19 関西 Debian 勉強会は Debian Wiki を使っています。https://wiki.debian.org/KansaiDebianMeeting7

コンテンツは Emacs Muse*20 を利用しており、html のテンプレートとデータから静的 html を生成する仕組みになっています*21 。

salsa では、ソースコードである muse ファイルを git push すると CI/CD 処理を実行して muse ファイルから htmlファイルを生成し、https://tokyodebian-team.pages.debian.net/ へ自動配備するように処理しています。

CI/CD 処理の設定ファイルは、git リポジトリの”.gitlab-ci.yml”*22 となります。
web サイトのコンテンツの構成は、東京エリア Debian 勉強会の web サイトに「このページを編集する方法について」*23 という裏方向けの説明ページがありますのでご参照ください。

図1

web サイトへ HTML ファイルを配備する CI/CD 処理の流れ

3.4.6 原稿システムの仕組み
東京エリア Debian 勉強会の原稿資料およびスライド資料のソースコードは、https://salsa.debian.org/tokyodebian-team/monthly-report のページにあります*24 。
コンテンツは TeX（テフ）という組版システム*25 を利用しており、ソースコードである tex ファイルから中間ファ
イルの dvi ファイルを経て、最終的に pdf ファイルを生成する仕組みになっています。配布している資料は、tex のテンプレートを勉強会の有志が作成し、豊富な原稿の量は参加者の長年の積み重ねで支えられています。

salsa では、tex ファイルを保存する git リポジトリ”monthly-report.git”と、web 公開するビルドした pdf ファイルを保存する”pdf20yy.git”というリポジトリに分けています*26 。これは、”monthly-report.git”で tex ファイルをCI/CD の度にすべてビルドし直すには処理量が多すぎること、CI/CD 処理が成功したとしても pdf ファイル数が多すぎてサーバ間の HTTP 通信の送信可能サイズの上限を超えてエラーになることから*27 、一度の CI/CD で処理する pdf ファイルの量を制限するためにリポジトリを年ごとに分割した経緯があります。
*20 https://www.gnu.org/software/emacs-muse/index.html*21 github pages で利用できる jekyll のようなツールです。
*22 https://salsa.debian.org/tokyodebian-team/tokyodebian-team.pages.debian.net/blob/master/.gitlab-ci.yml*23 https://tokyodebian-team.pages.debian.net/editing.html*24 関西 Debian 勉強会の資料もここにあります。
*25 印刷を想定したレイアウトや文字、図などを配置して原稿を作成するシステムのことをいいます。
*26 ”pdf20xx.git”は、”pdf2005.git”から”pdf2018.git”まで存在しており、毎年増える予定です。
*27 ERROR: Uploading artifacts to coordinator...

too large archive id=11633 responseStatus=413 Request Entity Too Large
status=413 Request Entity Too Large token=5ydbgD398上記の転送ファイルサイズの制約を回避するため、salsa における原稿ファイルの生成から pdf ファイルを web 公開するまでの処理は以下に流れになっています。

• tex ファイルを保存している”monthly-report.git”を git clone して tex ファイルを作成する• make を実行し、pdf ファイルが生成できることを確認する• 原稿を完成させる• tex ファイルを git commit し、git push する。push 時に salsa では CI/CD 処理は実行しない• make publish コマンドを実行し、pdf ファイルを”pdf20yy.git”へ git commit し、git push する• ”pdf20yy.git”で CI/CD 処理を実行し、pdf ファイルを”tokyodebian-team.pages.debian.net”に配備する• web から”https://tokyodebian-team.pages.debian.net/pdf20yy/xxx.pdf”でファイルを取得できる

図2web サイトへ原稿及びスライド PDF ファイルを配備する CI/CD 処理の流れ

3.5 今後の課題
原稿システムの CI/CD 処理が失敗することもあり、Runner や.gitlab-ci.yml の設定を見直す必要があると考えています。

web サイトも原稿システムも作ってから年月が経過しているため、web サイトのリニューアルや原稿ファイルのUTF-8 対応といった現代化をしていく重めの改修作業もあります。
また勉強会で発表していただいている方々も忙しいためか原稿を書いていただける方が減っており、半期のまとめ資料を冊子にしたときにページ数が少なくなってきている実情もあります。

3.6 まとめsalsa で提供している gitlab の機能と設定を紹介し、その機能を使って東京エリア Debian 勉強会のシステムを移行した説明をしました。salsa を有効活用して Debian プロジェクトへ貢献することに繋がるとよいと思っています。
また、勉強会の参加者に原稿システムの理解を深めていただき、自分の学びになるだけでなく、他の参加者やインターネットで検索してきた方の学びにつながる勉強会にしていければよいと思っています。

9

第 164 回 東京エリア Debian 勉強会 2018 年 6 月

4 メモ

10

Debian 勉強会資料2018 年 6 月 16 日
初版第 1 刷発行
東京エリア Debian 勉強会 （編集・印刷・発行）

11