massの日記

日々の薪

Gitlabを試してみる

昨年度GitHubのEnterprise版を試した感想のようなものをGitHub Enterpriseを試してみるにまとめた。
年が明けてからは、EnterpriseではなくOSSのGitHub、というか、Gitのホスティング管理ソフトウェアGitlabを試してみた。

GitHub上でソースコードが公開されていて、インストール関係の作業をshにまとめたものも公開されている。

個人的にはGitHubでのprivateリポジトリでプロダクトを管理している会社も多いのではないかと思う。
Businessプランとして提供されているものは最安コースだと$25、月3000円に満たないので、さほど大きくないPJやチームでは、SCMサーバの運用費よりも安く、手軽に使えると感じてこのコースを選ぶケースが多そうだ。

会社全体でSCMの主流をSVNからGitに据え、規模が大きくなるとGitHub Enterpriseという選択肢も出てくる。

ただ、GitHubはprivateなものは有料、畑は違うけれどプロジェクト管理ソフトウェアのRedmineのようにOSSの提供はされていない。
金銭面的な理由でとことんローコストを貫きたい、あるいは中身を自分達でカスタムしたいなら、GItHubのOSSに手を出すことになると思う。
ということで、一度は触ってみようと思い立ち、GitLabを試してみることにした。


環境構築
マシンのセットアップに使ったもの

VirtualBoxのインストール手順は割愛する。Vagrantのインストールを行いBase Boxesと呼ばれるVirtualBoxで使えるOSのtemplateを使用して、サーバを構築する。

$ gem install vagrant
$ vagrant box add ubuntu-1110-server-amd64 http://timhuegdon.com/vagrant-boxes/ubuntu-11.10.box
$ vagrant init ubuntu-1110-server-amd64
$ vagrant up

Ubuntuを選んだ理由は、Gitlabのページに書かれている通り、GitlabのofficialサポートのOSはUbuntuかDevianだから。
FedoraCentOS、Red Hastでも稼働し、Mac OS X、FreeBSDでも動かせるけれど、今回は環境を縛る条件がなかったので、公式サポートを名言されているUbuntuを選択した。

インストール
遊び場ができたので、後はGitlabのインストール。ここで選択肢が二つある。
一つは、手動セットアップ、とはいってもWikiに公開されている手順を踏んでいくだけで、すんなり入る。
もう一つは、上記のセットアップ手順をshにまとめたものがGitHub上で公開されているので、そちらを使うこと。

最初は手動でセットアップして、その後にインストールshを使ってやってみた。
後は、Passengerで動かすのと、Passenger×Nginx、Unicorn×Nginxで動かすのをそれぞれ試してみたくらい。
Unicornを選ぶ理由としては、再起動時にダウンタイムを限りなく0に近づけられるから。
正直SCMサーバとして使う上では、使うユーザ数を考慮すればパフォーマンスの理由でApplication ServerやHTTP Serverを悩む理由はなさそう。

また、手動セットアップとインストールshでは細かい違いはあるけれど(インストールshの方では、システムユーザとしてnginxというアカウントを追加する)、
基本的な動きはほぼ同じ。ただ、Gitlabのバージョンやブランチを細かく指定したいなら、インストールshをいじらないといけない。
さらに付け加えるなら、インストールsh内部でユーザの追加やpythonのインストールなどもしているので、一度は手動セットアップするか、インストールshの中身をじっくり見た方がよい。(とはいっても、この手の作業をする人でshの中身を見ない人はいないと思う)


詰まりどころ

  • よくWebでも書かれているのはPermissionの設定ミス

Gitlab内に登録されたリポジトリは、/home/git/repositories/以下に配置されるので、Gitlabを起動しているユーザにここへの書き込み権限がないといけない。

  • SSH鍵による認証

Gitのリポジトリ書き込みは原則としてSSHによる認証。このため、GItlabを起動しているユーザは、鍵認証情報を保持している必要がある。

  • Nginxを使う場合のNginxの起動ユーザ

NginxのWorkerプロセスを立ち上げているユーザもGitlabを起動しているユーザと同様に、というか、Gitlabを起動しているユーザがWorkerプロセスを立ち上げる必要がある。


いくつかはまる部分はあるけれど、半日もあればGitのホスティングサーバがセットアップできる。更新も定期的に行われているので社内でGitのホスティングサーバを無料で立てたいというのにはおすすめだと感じた。

ただ、最終的に常日頃から使いなれたGitHubと比較すると、どうしても使いづらいという感覚が拭えない。Redmine/Trackのように目的は同じだけどUIは全然違う、ではなく、目的は同じでUIも似通った感があるせいか、逆に違和感が払拭できない。

まあ、最終的には使いたいものを使えばいいと思ったのと、Railsアプリを公然と使えて楽しめたからいいやー、という結論に落ち着いた。