GitLab Development Kit で OSS開発 に参加する for MAC 2017

[GitLab](https://gitlab.com/) の開発環境は [GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit/tree/master) で構築します。
(年々手順が簡単になっているので2017年12月のバージョンで記載します。)

公式の [Prepare your computer](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/prepare.md) と [Set-up GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/set-up-gdk.md) に記載されている所から
GitLab Community Edition (CE) の開発環境の構築手順を抜粋しました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8369/32e34789-7170-6593-5672-be61af483984.png)


## Install

### Ruby package

* [Homebrew](https://brew.sh/index_ja.html) で [rbenv](https://github.com/rbenv/rbenv) をインストールします。
* Ruby のバージョンは [.ruby-version](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/.ruby-version) を参考に決定します。
* 開発環境を作成するディレクトリでは **Ruby** のバージョンを指定します。

```
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install rbenv ruby-build
$ rbenv install 2.3.6
$ rbenv local 2.3.6
$ gem install bundler
$ rbenv rehash
```

### Other package

* いろいろな言語やミドルウェアをインストールします。
  * PostgreSQL 10.x系は対応していません。

```
$ brew install git redis postgresql@9.6 libiconv icu4c pkg-config cmake go openssl node yarn coreutils re2
$ bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include
```

### GitLab Development Kit

* GitLab Community Edition は[公式](https://gitlab.com/gitlab-org/gitlab-ce)から *Fork* します。
    * `gitlab_repo` に *Fork* したURLを指定します。
    *  *Fork* ボタンをクリックしてから完了まで意外と時間がかかりました。

```
$ gem install gitlab-development-kit
$ gdk init
$ cd gitlab-development-kit
$ gdk install gitlab_repo=https://gitlab.com/[name]/gitlab-ce.git
```

* `*** Setup finished! ***` が表示されると完了です。
    * 時間が３０分以上はかかりました。特に *Seed* で時間が使われます。

```
*********************************************
************** Setup finished! **************
*********************************************
cat HELP
# GitLab Development Kit cheat sheet

gdk run            # Start everything
gdk run db         # Start enough to run tests
gdk run app        # Start GitLab, needs 'gdk run db'

gdk install gitlab_repo=https://my-fork   # Install everything
gdk update                                # Pull application changes from Git
gdk reconfigure                           # Delete and regenerate all config files created by GDK
gdk psql -d gitlabhq_development          # Postgres console
gdk redis-cli                             # Redis console

# Development admin account: root / 5iveL!fe
```

## Start everything

* `gdk run` コマンドで GitLab を利用するアプリケーションが開始されます。

```
$ gdk run
```

* `http://localhost:3000` にアクセスして `root` ユーザーのパスワードの入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8369/d0f69cf8-f967-cc8a-756a-39f08577d87e.png)

## Tips

* 公式のブランチに更新するには `support/set-gitlab-upstream` コマンドで *Upstream* ブランチを登録します。
* そうすると `gdk update` コマンドでソースコードの更新から再構築まで実行されます。

```
$ support/set-gitlab-upstream
$ gdk update
```

## Link

* [MacにGitLabの開発環境を構築する(2015年6月版)](https://qiita.com/hiroponz/items/b36bb521551f94eb4fc1)
* [GitLab Development Kit で開発環境を整える(2016年11月版)](http://blog.basyura.org/entry/2016/11/06/222058)

---

この記事を書いている途中に `gdk install` コマンドで使用される `rake dev:setup` コマンドにバグが見つかり[イシュー](https://gitlab.com/gitlab-org/gitlab-ce/issues/41513)を登録するとすぐに[マージ](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16144)されました。

:calendar: 2018年3月10日の[OSS Gate大阪ワークショップ](https://oss-gate.doorkeeper.jp/events/69160)ではGitLabのイベントを開催します。OSS開発に参加してコントリビュートしましょう！