Gitlab 5.2 & Gitlab CI 2.2 をインストールする

GithubのOSSクローンGitlabと、CI(継続的インテグレーション)サーバGitlab CIをインストールした。

Gitlabについては、プロジェクトを1個作らないとメンバーを追加できないなど多少気が利かないところはあるものの、とりあえずはこれで問題なさそう。 Gitlab CIのほうは、サーバに入ってリポジトリを準備しなければならなかったりして、まだまだ発展途上の感がある。

例示環境

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.2 LTS
Release:        12.04
Codename:       precise

Gitlab 5.2 のインストール

インストールガイドに従ってインストール。 特に問題なく導入できた。

注意点として、Groupを作った後、一つもProjectがない状態でメンバを追加しようとしても追加できない。 メンバを追加するには、まず先に適当なProjectを作っておく必要がある。

Gitlab CI 2.2 のインストール

こちらも基本的にはインストールガイドに従ってインストールする。 ところどころ、ログイン中のユーザやカレントディレクトリが不明瞭な箇所があるが、適当に空気を読んで実行する。 nginxの設定を行うところでは、tcp/80にすでにGitlabが立っているため、ポート番号をtcp/8080など違うものに変更する。

と、インストールまでは難しくないのだが、実際に使うためにはいろいろとしなければならないことがある。

Gitlabに新規ユーザgitlab_ciをAdministratorとして追加

Gitlab CIを動かしているユーザgitlab_ciがGitlabからリポジトリをcloneするために、ユーザgitlab_ciの公開鍵をGitlabに登録しておく必要がある。

まず、下記のようにgitlab_ciの公開鍵を生成する。

$ sudo su gitlab_ci
(gitlab_ci)$ ssh-keygen -t rsa
(gitlab_ci)$ cat ~/.ssh/id_rsa.pub
ssh-rsa ...

次に、Gitlab上で新規ユーザgitlab_ciを作成し、Administrator権限を付与する。 そして、上で生成した公開鍵をユーザ設定から登録しておく。

手動でリポジトリを準備する

バージョン2.2では、ビルドの際に使用するリポジトリを事前に手動でcloneしておかなければならない。

$ sudo su gitlab_ci
(gitlab_ci)$ mkdir ~/repositories/user
(gitlab_ci)$ cd ~/repositories/user
(gitlab_ci)$ git clone git@127.0.0.1:user/my-repository.git
(gitlab_ci)$ cd my-repository
(gitlab_ci)$ pwd
/home/gitlab_ci/repositories/user/my-repository

最後に表示させたパスが、Gitlab CI上でProjectを作成する際に必要となるPath Directoryである。 また、テストに必要なコマンド等はこのとき合わせて準備しておく必要がある。

Gitlabとの連携

Gitlab CI上でProjectを作成すると、DetailからProject Tokenが確認できる。 このTokenをGitlab上のProjectのSettings → Services → Gitlab CIの画面に入力し連携を有効にすれば、commitのたびにGitlab CI上でテストが走るようになる。