Gitlabを5.0にアップデート

Gitlabが5.0リリースされました。

アップデートはまぁ近いうちとおもってましたが、
このタイミングでとは...

しかし、公式サイトみてみたらちゃんと3/22にリリースしますって書いてあった...

今回はちゃんと調べて選択しろってことを大変よく学びました。


なにはともあれアップデートしました。
5.0からはgitoliteがいらなくなり、構成、インストール手順も大きく変わってます。

公式の手順はこちら。
https://github.com/gitlabhq/gitlabhq/wiki/From-4.2-to-5.0

以下は作業のログです。
bundlerのおかげでrvm使うメリットはあまりないかもしれませんが、
バージョン違いのアプリケーション共存とかも考えて一応使う方向でいきます。
うーんrbenvをつかったほうがいいんですかね?

Gitlab停止

[mikito@nya ~]$ sudo service gitlab stop

gitユーザのシェル変更

[mikito@nya ~]$ sudo chsh -s /bin/bash git

リポジトリの所有者変更

[mikito@nya ~]$ sudo chown git:git -R /home/git/repositories/

gitlab-shellインストール

[mikito@nya ~]$ sudo su - git
[git@nya ~]$ git clone https://github.com/gitlabhq/gitlab-shell.git /home/git/gitlab-shell
[git@nya gitlab-shell]$ cp config.yml.example config.yml
[git@nya gitlab-shell]$ vim config.yml # gitlab_url編集
[git@nya gitlab-shell]$ ./support/rewrite-hooks.sh

gitlabコピー

[mikito@nya ~]$ sudo cp -R /home/gitlab/gitlab /home/git/gitlab
[mikito@nya ~]$ sudo chown git:git -R /home/git/gitlab
[mikito@nya ~]$ sudo rm -rf /home/gitlab/gitlab-satellites

RVM再度入れる

[mikito@nya ~]$ sudo su - git
[git@nya ~]$ curl -L https://get.rvm.io | bash -s stable --ruby
[git@nya ~]$ rvm install 1.9.3
[git@nya ~]$ rvm use 1.9.3
[git@nya ~]$ gem install bundler --no-rdoc --no-ri
[git@nya ~]$ gem install charlock_holmes --version '0.6.9' --no-rdoc --no-ri
[git@nya ~]$ rvm gemset create gitlab
[git@nya ~]$ rvm use 1.9.3@gitlab --default

gitlab update

[git@nya ~]$ cd gitlab
[git@nya gitlab]$ cp config/gitlab.yml config/gitlab.yml.old
[git@nya gitlab]$ git fetch
[git@nya gitlab]$ git checkout 5-0-stable
[git@nya gitlab]$ cp config/gitlab.yml.example config/gitlab.yml # 再度設定
[git@nya gitlab]$ bundle install --without development test postgres --deployment
[git@nya gitlab]$ bundle exec rake db:migrate RAILS_ENV=production
[git@nya gitlab]$ bundle exec rake gitlab:shell:setup RAILS_ENV=production
[git@nya gitlab]$ bundle exec rake gitlab:shell:build_missing_projects RAILS_ENV=production
[git@nya gitlab]$ mkdir /home/git/gitlab-satellites
[git@nya gitlab]$ bundle exec rake gitlab:satellites:create RAILS_ENV=production
[git@nya gitlab]$ bundle exec rake gitlab:wiki:migrate RAILS_ENV=production

パーミッションの設定など

[git@nya gitlab]$ chmod 700 /home/git/.ssh
[git@nya gitlab]$ chmod 600 /home/git/.ssh/authorized_keys
[git@nya gitlab]$ chown -R git /home/git/gitlab/log/
[git@nya gitlab]$ chown -R git /home/git/gitlab/tmp/
[git@nya gitlab]$ chmod -R u+rwX /home/git/gitlab/log/
[git@nya gitlab]$ chmod -R u+rwX /home/git/gitlab/tmp/
[git@nya gitlab]$ mkdir /home/git/gitlab/tmp/pids/
[git@nya gitlab]$ chmod -R u+rwX /home/git/gitlab/tmp/pids

unicorn設定

[git@nya gitlab]$ cp config/unicorn.rb config/unicorn.rb.old
[mikito@nya ~]$ cp config/unicorn.rb.example config/unicorn.rb
[mikito@nya ~]$ vim config/unicorn.rb # 待ち受けポートを変更
listen "127.0.0.1:8080", :tcp_nopush => true

gitconfig設定

[git@nya gitlab]$ git config --global user.name "Gitlab"
[git@nya gitlab]$ git config --global user.email "gitlab@gitlab.mikinya.net"

起動スクリプト更新

[mikito@nya ~]$ sudo -E curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab
[mikito@nya ~]$ sudo vim /etc/init.d/gitlab # rvm環境変数を追加
#
# set rvm environment valiables.
#
export PATH=/home/git/.rvm/gems/ruby-1.9.3-p392@gitlab/bin:/home/git/.rvm/gems/ruby-1.9.3-p392@global/bin:/home/git/.rvm/rubies/ruby-1.9.3-p392/bin:/home/git/.rvm/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/git/bin
export GEM_HOME=/home/git/.rvm/gems/ruby-1.9.3-p392@gitlab
export GEM_PATH=/home/git/.rvm/gems/ruby-1.9.3-p392@gitlab:/home/git/.rvm/gems/ruby-1.9.3-p392@global
export MY_RUBY_HOME=/home/git/.rvm/rubies/ruby-1.9.3-p392
export IRBRC=/home/git/.rvm/rubies/ruby-1.9.3-p392/.irbrc

VirtualHost再設定

[mikito@nya ~]$ sudo vim /etc/httpd/conf/httpd.conf
/home/gitlab/gitlab/public -> /home/git/gitlab/public
[mikito@nya ~]$ sudo /etc/init.d/httpd graceful

SSH 環境変数(参考: https://github.com/gitlabhq/gitlab-shell/issues/12

[mikito@nya ~]$ sudo vim /etc/ssh/sshd_config
PermitUserEnvironment yes
[mikito@nya ~]$ sudo su - git
[git@nya ~]$ env | grep -E "^(GEM_HOME|PATH|RUBY_VERSION|MY_RUBY_HOME|GEM_PATH)=" > ~/.ssh/environment
[git@nya ~]$ exit
[mikito@nya ~]$ sudo /etc/init.d/sshd restart

再起動

[mikito@nya ~]$ sudo service gitlab start

いらないの削除

[mikito@nya ~]$ sudo su - git
[git@nya ~]$ rm -rf bin
[git@nya ~]$ rm -rf gitolite/
[git@nya ~]$ rm projects.list
[git@nya ~]$ cd repositories/
[git@nya repositories]$ rm -rf gitolite-admin.git/
[git@nya repositories]$ rm -rf testing.git/
[git@nya repositories]$ rm -rf root
[git@nya ~]$ exit
[mikito@nya ~]$ sudo rm /home/git/gitlab.pub
[mikito@nya ~]$ sudo userdel -r gitlab