Gitlabのインストールとアップデート

# 少し前までのGitlabセットアップにおける問題点
Gitlabの問題点は、インストールとアップデートが、サーバー構築の知識が無いと難しい点でした。
インストール自体は、Bitnamiのインストーラーを使えば、簡単に行えるようになりましたが、月例アップデートを当てていくのは正直なところ難しく古いバージョンで放置されている方も多いのでは無いでしょうか？
私もVer4をGitlabのサイト説明を見ながら苦労してインストールした後、Bitnamiのインストーラーで、仕切り直してVer6をインストールした後は、バージョンアップはあきらめて、放置して利用していました。
この問題は、公式のパッケージが公開されるようになって解決したのですが、ネットで検索できる日本語の情報は、難しかった頃の情報ばかりなので、Gitlabの普及を願って、2014/9現在の状況について、投稿したいと思います。

# パッケージによるインストール
パッケージによるインストールは、非常に簡単で、初期の頃のような大変さは、全くありません。
強いていえば、メールの設定が面倒なくらいです。
https://about.gitlab.com/downloads/

## Ubuntu12.04 Serverへのインストール
### パッケージのダウンロード
```
wget https://downloads-packages.s3.amazonaws.com/ubuntu-12.04/gitlab_7.3.1-omnibus-1_amd64.deb
```
### インストール
```
sudo apt-get install openssh-server
sudo apt-get install postfix
sudo dpkg -i gitlab_7.3.1-omnibus-1_amd64.deb
```
### 設定ファイルの編集
アクセスするサイトのドメインの設定を行います。

```
sudo vi /etc/gitlab/gitlab.rb
```
### 再構成＆実行
```
sudo gitlab-ctl reconfigure
```
初期ユーザーは、下記のIDとパスワードでログインできます。
Username: root 
Password: 5iveL!fe

## gmailを使ったファイルの転送
インストールで一番面倒なのは、メールの転送設定です。
私は、gmailを使って転送するようにしました。
メールの設定は、production.rbというファイルに書かれています。

```
sudo vi /opt/gitlab/embedded/service/gitlab-rails/config/environments/production.rb
```
下記の設定をconfig.action_mailer.raise_delivery_errorsの後ろに追加します。
[mail-address][password]の部分は、自分の環境に合わせて書き換えてください。

```
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => "587",
    :domain => "gmail.com",
    :authentication => :plain,
    :user_name => "[mail-address]@gmail.com",
    :password => "[password]",
    :enable_starttls_auto => true
  }
```

# アップデート
パッケージになったことで、ディストリビューションのパッケージマネージャーが、全て面倒みてくれるようになりました。
少し前のように、バージョン毎に、スクリプトを沢山打ち込む必要はありません。

### サービスを停止します。

```
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
```
### 念のためデータのバックアップを作成します。

```
sudo gitlab-rake gitlab:backup:create
```
バックアップとレストアの方法は、下記のアドレスで説明されています。
http://doc.gitlab.com/ce/raketasks/backup_restore.html

### 新しいパッケージを指定して、アップデートを行います。
※追記情報あります。

```
sudo dpkg -i gitlab_7.3.1-omnibus-1_amd64.deb
```
### データベースのマイグレーションを行います。

```
sudo gitlab-ctl reconfigure
```
### 停止したサービスの再起動を行います。

```
sudo gitlab-ctl restart
```

これだけで、バージョンアップが完了します。
Gitlabは、毎月リリースされて、どんどんUIが洗練されて、新しい機能が入ってきますので、バージョンアップが簡単にできるのは、開発者としては、とても嬉しいことです。
過去のバージョンで我慢して使われている方は、一度リセットして、新しく構築し直してみては如何でしょうか？
業務で使われている方は、インフラの再構築は、ハードルが高いとは思いますが、見返りは大きいと思います。

# 新しいリポジトリへコミット履歴を含めて、移す方法
Gitlabには、Gitのリポジトリの他に、Issue,Wall,Wiki,Snippetの情報を持っています。
※残念ながらWallは、新しいバージョンでは非サポートになってしまいました。
データベースに格納されているデータは、データベースのマイグレーションがあるので、残念ながら簡単に移すことはできません。
でもGitのリポジトリに関して言うと簡単に、別のリポジトリへ移すことが可能です。
.gitフォルダの中のconfigファイルをテキストエディタで、開きます。
クローンした時に、設定したアドレスが、"url = "の後に書かれていると思います。
この値を新しいリポジトリのアドレスに書き換えて、pushすれば、コミット履歴を保ったまま新しいリポジトリへ転送することができます。
もっとスマートな方法があるのかも知れませんが、とりあえずリポジトリだけは、新しいサーバーへ移すことが可能です。

#追記
私が勤めている会社では、オンプレミス環境にGitlabをインストールして、社内メンバーだけでプロジェクトが閉じている場合には、Gitlabを使用しています。
外部メンバーがプロジェクトに参加している場合には、Backlogを使用しています。
Backlogは、最近Pull Requestも実装されて使いやすくなってきてはいるのですが、まだ使い勝手はGitlabの方が良い感じです。（ブランチのプロテクトやPull Request時のマージ元ブランチの自動削除指定だとか・・・）
最近は、外部メンバーの居るプロジェクトが多くなってきているのとクラウド利用の抵抗感が薄れてきているので、Backlogの利用率が高くなってきているので、Gitlabのアップデートは久しぶりとなります。(あまり使って無かったということですね・・)
Ver7.7.2からVer7.14.3への大幅アップデートだったのですが、問題が起きることは、有りませんでした。安定してますね。
ただし、パッケージの指定方法が簡単になっていましたので、追記しておきます。

```
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce
```
上記のように、指定することによって最新のパッケージがインストールされるようになったみたいです。
今までどおり個別にパッケージを指定してインストールしたい場合には、下記のURLからパッケージをダウンロードすることも出来ます。特定のバージョンにアップデートしたい場合には、こちらを利用すると良いと思います。
[GitLab Community Edition packages](https://packages.gitlab.com/gitlab/gitlab-ce)