読者です 読者をやめる 読者になる 読者になる

プチ技術メモ

技術系の情報を中心に適当に書いています

東北大学でGitとGitLabの講習会の講師をしてきました

GitLab

昨年の11月頃にGitLabのイベントで知り合った東北大学の教員の方に、大学での教育や研究にGitLabを活用できないか相談したところ、ありがたいことに大学でのGitLabの利用にご理解を頂くことが出来ました。

まずは、学生と教職員の方からGitとGitLabの有用性を認知してもらう必要があるため、初心者向けのGitとGitLabの講習会を開催しようとの流れになり、その講師を引き受けさせて頂きました。

初心者向けの講習会ということでしたので、まずはSourceTreeでGitの基本的な操作方法の説明を行ったあとに、GitLabを使用して卒業研究を行うワークフローの説明をしました。3時間と限られた時間の上、私の説明もいまいちだったので、参加者の方にGitLabの良さを十分に伝えることができたのかあまり自信はありませんが、講習会を開催できて本当に良かったと思います。

今回の講習会のために、東北大学情報基盤センター公式のGitLabサーバーとCI用のDocker Runnerを用意して頂くことができました。このサーバーは講習会に参加していなくても、東北大学の学生と教職員の全員が利用可能です。なお、GitLabの利用者が増えないと、最悪の場合はサーバーの閉鎖もあり得るとのことでしたので、東北大学の学生と教職員の方には積極的に活用して頂きたいです。 また、次の機会があればGitLab Pagesで大学の研究室のウェブサイトを管理する方法とかの話をしたいと考えています。

gitlab.cite.tohoku.ac.jp

それと、役に立つのかは分かりませんが、講習会で使用した資料のリンクも貼っておきます。よろしければ、初心者向けのGitとGitLabの教育資料にご利用ください。

docs.google.com

久しぶりにGitLabにコントリビュートしました

GitLab 8.14がリリースされましたが、久しぶりにコントリビュートしたので修正内容を紹介します。

Merge RequestのChangesのdiffの先頭の余分なスペースを削除しました。 Changesのdiffをコピー&ペーストするのが少しだけ楽になります。

Networkグラフで存在しないリビジョンを検索すると、404ページに飛ばされる不具合を修正しました。 リビジョンの検索は私が実装した機能なのですが、不具合のIssueがオープンされたままだったので対応しました。

Wikiの編集中に表示される右上の「Edit」ボタンを削除しました。 Wikiの編集後に間違って右上の「Edit」ボタンを押してしまって編集内容が失われる悲劇が少しは減ると思います。

なお、CHANGELOGの衝突問題を改善するため、今回のリリースよりCHANGELOGのエントリー毎にファイルを作成するように運用が変わりました。 以下のページの「Generate a changelog entry with bin/changelog」が参考になると思います。

久しぶりにGitLabにコントリビュートしました

GitLab

前の記事 では毎月1コミットをノルマにと意気込んでいましたが、その後は全くコントリビュートしていませんでした。モチベーションの維持は思ったよりも難しいので、今後は気が向いた時にコミットして行きたいと思います。

今回私が行った修正は以下の3つです。

特にWikiページの日本語対応について、GitLab 8.4でWikiのページ名に日本語を使用できるようになった(※使用可能な文字の制限を緩くした)のですが、日本語を使用すると500エラーとなる上に、それ以降は日本語を含まないページを編集しても500エラーが発生するためにWikiの更新ができなくなります。そのような現象に困っている方は8.6にアップデートすると良いと思います。

それと、久しぶりにGitLabにMRを投稿して気がついたのですが、最近はMRがマージされるまでに最低でもGitLabのコアメンバーが2人でレビューするルールのようです。英語のコメントの言い回しがおかしかったりすると指摘してもらえるので、色々と勉強になります。 ちなみに、以前はGitLabの初期開発者&現CTOの@dzaporozhets氏が1人で全てのMRをレビューしてマージしていた気がしますが、レビューの負荷分散をしないと回らない規模になったのだと思います。

余談ですが、GitLabは毎月22日に新バージョンがリリースされますが、急いでアップデートすると思わぬ地雷を踏む可能性があるので、毎月1日まで待ってからGitLabのIssueで致命的な問題が無いことを確認してからアップデートしています。

その他のGitLab 8.6での変更点については以下の公式ブログを参考にして下さい。

GitLabへのコントリビュートを再開しました

GitLab

前置き

2012年12月頃、前職の会社でGitLabを使って仕事をしていました。 しかし、network graphの出来があまり良くないと不満があったため、色々と修正をしてはGitHubプルリクを送っていました。

その頃は大体、月に5個くらいプルリクを送っていて、その功績が評価されて2013年4月にはGitLab 5.1のMVPに選ばれました

その後

GitLabのMVPがきっかけなのか、ITベンチャー企業からスカウトメールが届いたのを契機に、ベンチャー企業への転職熱が高まり、2013年11月にバイオベンチャー企業に転職しました。

その当時、個人的な関心としてはLinuxOSSを活用した開発をやりたかったのですが、転職前の会社はいわゆるSIer的な会社だったため、残念ながら仕事の中でその欲求を満足させることは出来ませんでした。 そのため、趣味として独学でその辺の勉強をしていました。GitLabへのコントリビュートも、その延長線上にあったのだと思います。

しかし、転職後の会社では業務として、かなり自由に技術を選択して開発をすることが可能になってしまいました。 そのため、仕事の中である程度の欲求が満たされてしまったために、GitLabへのコントリビュートが停滞することになりました。

転機

何となくOSSにもっとコントリビュートしないとなーと思っていたことやGitLab 7.12の変更がかなりアツい感じだったこともあり、GitLabへのコントリビュートを再開しようと決めました。

ただし、あまりハードルを上げ過ぎると長続きしないと思うので、毎月のリリース毎に最低1コミットをノルマにして行きたいと思います。とりあえず、先月と今月はなんとかノルマを達成できました。(GitLabのCHANGELOGを"Hiroyuki Sato"で検索すると、7.13.0と7.14.0でそれぞれ一件ずつヒットします。)

お願い

マーリクのネタが欲しいので、不具合やちょっとした機能改善の要望があれば、私のGitLabのForkで報告をお願いします。可能な範囲で対応をする予定です。

それと、私の経験ではGitLabに送ったプルリク/マーリクは9割くらいの割合でマージされているので、OSSにコントリビュートしたいRailsエンジニアは積極的にプルリク/マーリクを送ると良いです。興味のある方はMacにGitLabの開発環境を構築するを参考にして下さい。

GitLab 7.5〜7.7の変更点まとめ

GitLab

今更ですが、GitLab 7.5〜7.7の変更点をまとめてみます。

なお、自前でGitLabサーバーを建てなくてもGitLab.comで最新のGitLab Enterprise Edition(GitLab EE)を無料で制限なしに利用できます。 ちなみに、GoogleTwitterGitHub、BitBucketアカウントでのログインにも対応しています。

また、ci.gitlab.comで最新のGitLab CIを無料で制限なしに利用できます。

GitLab 7.5

Custom Git Hooks

GitLabはCustom Git Hookをサポートします。これにより、pre/post-receive、update hookで任意の処理が可能になります。詳細はここを参照して下さい。

APIの改善

APIにいくつかの拡張や改善を実施しました。

  • プロジェクトイベントAPIにusernameを追加
  • ブランチの削除がvalid JSONを返すように修正
  • Annotated tags APIの改善

Atlassian Bamboo CI Service

GitLabにAtlassian Bamboo CIを統合。

Git hookでauthorとファイル名をチェック(EE only feature)

いくつかのGit hookを追加

  • コミットのauthorがGitLabのメンバーであるかチェック
  • コミットのauthorを正規表現で制限
  • コミットのファイル名を正規表現で制限

LDAPと毎日自動的に同期(EE only feature)

GitLabのユーザーとLDAPのユーザーを毎日自動的に同期します。同期を行う時刻は設定可能です。

また、LDAP Groupの同期機能も定期的に実行されるようになります。

GitLab CI 5.2

GitLab 7.5と同時にGitLab CI 5.2もリリースしました。

並列ビルド

GitLab CIで並列ビルドが可能となります。つまり、2つ以上のテストスイートがある場合に、それらを同時に実行できます。これにより、ビルド時間を劇的に減らすことができ、CIプロセスをスピードアップ出来ます。

GitLab 7.6

ソーシャルアカウントリンク

GoogleTwitterGitHubのアカウントでGitLabにログインすることが可能になりました。

モバイルUIの改善

小さな画面での表示を改善しました。これにより、路上でもより簡単にマージすることが可能です。

GroupへのFork

Fork先のGroupを選択できるようになりました。

マージ前にRebase(EE only)

マージ前にRebaseすることが可能になりました。

Audit log(EE only)

プロジェクトメンバーの変更をaudit logに自動的に記録するようになりました。

Kerberos support(EE only)

Kerberos認証をサポートしました。

GitLab 7.7

原文

ナビゲーションのデザイン変更

ナビゲーションのデザインを大幅に変更しました。詳しい経緯はこちらの記事を参照下さい。

GitHub importer

GitHubのあなたのプロジェクトをissue*1も含めて全てを1クリックでインポートすることが可能になりました。新しいプロジェクトを作成する際に可能です。

Mention notification level

GitLabからの通知メールが多すぎて困っている場合は、mentionされた場合だけメール通知を受け取る設定が可能になりました。

OAuth

FacebookTwitterGoogleのようにGitLabをOAuth resource serverとして使用可能になりました。

GitLabの設定用UI

gitlab.ymlで設定していた内容の一部がWeb UIで設定をできるようになりました。

GitLab CI 5.4

OAuth authorization

GitLabがOAuth resource serverとして利用できるようになったので、GitLab CIはGitLabを認証に利用するように変更しました。

Runners for everyone

管理者でなくとも、CIにプロジェクトのrunner*2を追加出来るようになりました。 任意のマシンにGitLab Runner packageをインストールし、GitLabインスタンスの登録にプロジェクトのトークンを使用して下さい。

Labels for Runners and jobs

Runnerのグループを簡単に追加出来るようになりました。これによって、異なる環境のジョブを簡単に実行できるようになります。

Omnibus packages for GitLab Runner

GitLab RunnerのOmnibus packagesの提供を開始しました。

*1:順番が逆転するバグがあったのでマーリクを送った

*2:GitLab CIでジョブを実行するワーカーのこと

GitLab 7.12がアツい件

GitLab

6月22日にGitLab 7.12がリリースされたのですが、その内容がアツい感じだったので、久々にブログに書きたくなりました。

1. SAML認証に対応

SAML認証に対応したことも素晴らしいですが、それにcontributeしたのがCERNのエンジニアというのがアツいです。

ここを見るとNASAとかSPACEXとかもGitLabを使っているっぽいので、今後は機密情報を扱う学術分野での導入が増えて行きそうな気がします。

2. GitLab CIが.gitlab-ci.ymlに対応

一緒にリリースされたGitLab CIが.gitlab-ci.ymlに対応しました。 Travis CIっぽくjobのscriptをYAMLファイルに記述出来るようなったらしいので、明日にでも会社のGitLab CIで試してみたいと思います。

それと、この機会にGitLabへのcontributeを再開したいと思いますが、とりあえずissueで報告されているバグフィックスとかが無難ですかねぇ。

GitLab 6.6〜7.4の主な変更点まとめ

GitLab

GitLab 6.6〜7.4の間に入った主な変更点を適当にまとめて紹介します。
適当すぎて参考にならないかもしれないので、公式ページへのリンクも貼っておきます。
パフォーマンスの改善も頻繁に行われているので、アップデート出来る人は早めにアップデートしましょう。

続きを読む