RaspberryPi2でGitLabを動かしてゲーム開発に使う



最近になってUnityのバージョン管理にGitを使ってみようと思い調査を始めたGit初心者です。本当はP4ConnectとPerforceの組み合わせ使いたかったんだけどね、、、。

せっかくなのでマイルストーンやイシュートラッカーが付属しているGitHubやBitBucket等のホスティングサービスを使おうとしたけど無料の範囲だと制限が多くて断念。
GitHubクローンで有名なGitLabを自宅サーバーに立てて使うことにした。
久しぶりに公式サイトを覗くとデザインが一新されていて、悪魔みたいなアイコンじゃなくなっているし、今風のレイアウトになってる！！
これは期待できそう。

ただ、GitLabはLinuxしか対応していないので、Linuxサーバーを立ち上げる必要がでてきた。
そこで一番安い選択のRaspberryPi2を購入することに。パフォーマンスに不安があるけど。

32GBのSDカードで運用。リポジトリもとりあえずそこに保存する。
USBハードデイスクを繋げてそこに保存してもいい。

下の記事を参考に作業しながらハマったところをメモすることにした。
> RASPBERRY PI 2にGitLab CEをインストールする
> http://qiita.com/s_edward/items/ec74d4893aaa78332d5a



## Raspbianのインストール

RaspberryPi2は購入直後はOSも入っていないため、OSをインストールしないと動かない。
GitLabはRaspbianWheezyにしか対応していないので、

> RASPBIAN
> https://www.raspberrypi.org/downloads/raspbian/ 

こちらのサイトから *RASPBIAN WHEEZY May 2015* をダウンロード。
解凍後はDD等のソフトを使ってSDカードへディスクイメージを書き込む。

> Raspberry Pi 2 Model B をインストールしてSSH接続できるようにしてみる
> http://techblog.clara.jp/2015/02/raspberry-pi-2-model-b_install_and_ssh_connect/

記事を参考に初期設定。

```
$ ssh pi@raspberrypi.local
$ pass: raspberry
```

んで、SSH接続を確認。

## GitLabのインストール

今回インストールしたのは *GitLab-CE 8.1.2* 

> Download GitLab Community Edition (CE)
> https://about.gitlab.com/downloads/#raspberrypi2

こちらのマニュアルにしたがってインストールを進めると２分で完了するとのこと。
しかし以下のようなエラーが発生。

```
E: The method driver /usr/lib/apt/methods/https could not be found.
```

２分じゃないやん！
以下のコマンドでhttps関係のライブラリをインストール。

```bash
$ sudo apt-get install apt-transport-https
```

再度インストールした後、以下のコマンドでGitLabを起動。

```bash
$ sudo gitlab-ctl reconfigure
```

ブラウザで`http://raspberrypi`へアクセスすると。。。

簡単でした〜。

MacからはURLに`.local`を追加した`http://raspberrypi.local`でアクセスする必要があるみたい。


## サインアップが使えない

アクセスするとサインアップがあったので、それを使ってユーザー登録しようとしたら確認メールがいっこうに届かない。。。
不特定多数で使うわけではないのでサインアップの機能は使わず、アドミニストレータでログインして、ユーザーを追加することに。

```
Username: root 
Password: 5iveL!fe
```


## git push でサーバーが応答しない

既存のプロジェクトをサーバーへpushしようとすると以下のようなエラーがでて完了しない。

```
error: RPC failed; result=22, HTTP code = 413B | 265.24 MiB/s
```

どうやら、転送するリポジトリの容量が大きすぎてエラーがでているようだ。

調べてみるとGitLabはディフォルトでは250MBまでのpushしか受け付けないように設定されているので、設定を弄って拡張しろとのこと。
なんか面倒だったし、今後の巨大なファイルのプッシュを事前に防ぐためにもこの制限はそのままにして、分割してPushした。(๑´ڡ`๑)


## サーバーを外側からアクセスできるようにする

まずRaspberryPi2を固定IPにして、再起動してもIPアドレスが変わらないようにする。

```ssh
$ sudo nano /etc/network/interfaces
```

`nano`は簡易テキストエディターで、`vi`よりは使いやすい感じ。
`Ctrl+O`で保存。`Ctrl+X`で終了。

ネットワーク設定ファイルを編集する。

```/etc/network/interfaces
iface eth0 inet manual
```

を

```/etc/network/interfaces
iface eth0 inet static
address 192.168.0.11
netmask 255.255.255.0
gateway 192.168.0.1
```
に変更。


80番とのポートを使うので、ルーター側のポートマッピング設定で、外から繋げれるようにする。


## デザイナー向けGitクライアントの選定

デザイナー向けのGitクライアントを調べることに。
以下のソフトが候補に上がった。

- GitHub Desktop : https://desktop.github.com/
- SourceTree : https://www.sourcetreeapp.com/
- TortoiseGit (Windowsのみ) : https://tortoisegit.org/

吟味した結果GitHub Desktopを使うことに。
インターフェイスがシンプルなのがいいよね。SourceTreeは素晴らしいけどUIが複雑すぎなので。
WindowsならTortoiseGitでもいいと思うけど、操作が重い印象。

ただ、GitHub DesktopはGitHub以外のところからクローンすることができないようなので仕方がなくコマンドを使うことに。

```bash:
> git clone http://hoehoge/works/hogehoge.git
```

あとはGitHub Desktopでクローンしたローカルリポジトリを追加をするだけ。

準備完了〜。


## 巨大なバイナリファイルの問題

よくいわれているけど、Gitは巨大なバイナリファイルの扱いがほんと苦手。
それを改善するための手法としてGitLFSがあるのだけど、GitLabでも近々サポートされるようだ。 
https://gitlab.com/gitlab-org/gitlab-ce/issues/2955
これでバイナリファイルでリポジトリが肥大化してしまう心配も抑えられる。
GitLab8.2で実装予定とのこと。


## 感想

現在４人ほどで1GBほどのリポジトリを共有しているけど、今のところ不自由なく使えてはいる。
ただ、ブラウジングやGitHub DesktopのSyncは多少もたつきを感じるかな。

RaspberryPi2は消費電力も少なく、小さくて邪魔にならないので一家に一台どうでしょうか？