GitLab 5.0から 6.0 へアップデート

gitlab6.0

長らくGitLabをアップデートしていなかったので、6.0リリースを機にアップデートする。

環境確認

CentOS6.4+unicorn+Apache+rvm
現状のGitLabのインストール状況をrakeコマンドで確認。

$ bundle exec rake gitlab:env:info RAILS_ENV=production
System information
System:          CentOS release 6.4 (Final)
Current User:     git
Using RVM:     yes
RVM Version:     1.19.1
Ruby Version:     1.9.3p392
Gem Version:     1.8.25
Bundler Version:1.3.5
Rake Version:     10.0.3

GitLab information
Version:     5.0.1
Revision:     907a8f4
Directory:     /home/git/gitlab
DB Adapter:     mysql2
URL:          http://example.net
HTTP Clone URL:     http://example.net/some-project.git
SSH Clone URL:     ssh://[email protected]:10022/some-project.git
Using LDAP:     no
Using Omniauth:     no

GitLab Shell
Version:     1.1.0
Repositories:     /home/git/repositories/
Hooks:          /home/git/gitlab-shell/hooks/

・公式ガイド(5.4から6.0へのアップデートだがほぼ同じ)
https://github.com/gitlabhq/gitlabhq/blob/master/doc/update/5.4-to-6.0.md
・目標
GitLab6.0へアップデートし、動作確認まで。

目次

  1. 6.0で廃止されたものの確認
  2. バックアップ
  3. サーバー停止
  4. GitLab6.0のコードを取得
  5. gitlab-shellのアップデート
  6. gitのバージョンを1.8へ
  7. 追加パッケージのインストール
  8. ライブラリのインストールとマイグレーション
  9. configファイルのアップデート
  10. 起動ファイルのアップデート
  11. gitlab起動
  12. 状態確認

内容

6.0で廃止されたものの確認

Global projectsとTeamsが廃止された。
グローバルネームスペースが廃止されたので、アップデート前にすべてのグローバルプロジェクトを、グループもしくはユーザー以下に手動で移動させないと、アップデートによってグローバルプロジェクトがプロジェクトオーナーのネームスペースに自動的に移動される。プロジェクトが移動されると、そのプロジェクトメンバーはgit remote URLの再設定法が記載されたemailを受信するので、アップデートのテストを行う際は、メール送信機能が無効になっていることを確認すること。

今回、私の環境ではそういったプロジェクトは存在しないので特になにもしない。

 

バックアップ

データベースのバックアップをとる。

$ sudo su git
$ cd /home/git/gitlab   
$ sudo -u git -H RAILS_ENV=production bundle exec rake gitlab:backup:create

するとここで下記のエラーが出た。

/usr/local/lib/ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError)
     from /usr/local/lib/ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
     from /usr/local/lib/ruby/1.9.1/rubygems.rb:1231:in `gem'
     from /usr/bin/bundle:22:in `<main>'

よくみるとRVMを使っているのにもかかわらず、なぜかgemファイルの参照先が/usr/local/lib〜となっている。
おそらくこれは、sudoでコマンドを実行したため、gemのパスが変わってしまっているからだ。
というわけでかわりに下記のコマンドを実行。

$ bundle exec rake gitlab:backup:create RAILS_ENV=production

成功。

※バックアップファイルの出力先は config/gitlab.yml の gitlab.backup.path で指定する。デフォルトは相対パスで tmp/backups となっており、バックアップ実行時にこのディレクトリに repositories, db, uploads ディレクトリが作成されそれぞれが書きだされる。backup_information.yml というファイルにバージョンやバックアップ日時などが書かれ、 {unix_timestamp}__gitlab_backup.tar という tar ファイルにまとめられている。

 

サーバー停止

$ sudo service gitlab stop

GitLab6.0のコードを取得

$ cd /home/git/gitlab
$ sudo -u git -H git fetch
$ sudo -u git -H git checkout 6-0-stable

gitlab-shellのアップデート

$ cd /home/git/gitlab-shell
$ sudo -u git -H git fetch
$ sudo -u git -H git checkout v1.7.0

gitのバージョンを1.8へ

私の環境のgitのバージョンが1.7だったため、ついでにgitもアップデートする。

$ cd /usr/local/src/
$ sudo wget https://git-core.googlecode.com/files/git-1.8.3.4.tar.gz
$ sudo tar xzf git-1.8.3.4.tar.gz
$ cd git-1.8.3.4
$ sudo ./configure --prefix=/usr
$ sudo make all
$ sudo make install 
$ git --version
git version 1.8.3.4

追加パッケージのインストール

$ sudo yum install -y python-docutils

ライブラリのインストールとマイグレーション

$ cd /home/git/gitlab

bundlerで追加されたライブラリのインストールを行う。
MySQLを利用しているので、下記を実行。

$ bundle install --deployment --without development test postgres

次に以下の rake タスクを実行して各種データのマイグレーションを行う。

$ bundle exec rake db:migrate RAILS_ENV=production
$ bundle exec rake migrate_groups RAILS_ENV=production
$ bundle exec rake migrate_global_projects RAILS_ENV=production
$ bundle exec rake migrate_keys RAILS_ENV=production
$ bundle exec rake migrate_inline_notes RAILS_ENV=production
$ bundle exec rake gitlab:satellites:create RAILS_ENV=production

redisのキャッシュをクリア

$ bundle exec rake cache:clear RAILS_ENV=production

その他

$ bundle exec rake assets:clean RAILS_ENV=production
$ bundle exec rake assets:precompile RAILS_ENV=production

configファイルのアップデート

5.4ではwebサーバーにpumaを使っていたが、6.0からunicornに戻ったのこと。ちょうど、私の環境におけるGitLabのバージョン5.0ではunicornを使っていたので、gitlab.ymlのみ編集を行う。
設定ファイル /home/git/gitlab/config/gitlab.yml を下記リンク先の内容と自分の環境をあわせて作成する。
https://github.com/gitlabhq/gitlabhq/blob/master/config/gitlab.yml.example

$ cd /home/git/gitlab/config
$ cp gitlab.yml gitlab.yml.bak
$ rm gitlab.yml.example
$ wget https://raw.github.com/gitlabhq/gitlabhq/6-0-stable/config/gitlab.yml.example
$ cp gitlab.yml.example gitlab.yml
$ vi gitlab.yml

主に下記を編集した。

  ## GitLab settings
  gitlab:
    ## Web server settings
    host: gitlab.example.net
    port: 80
    https: false
…
    ## Email settings
    # Email address used in the "From" field in mails sent by GitLab
    email_from: [email protected]

    # Email address of your support contact (default: same as email_from)
    support_email: [email protected]
…
    # If you use non-standard ssh port you need to specify it
    ssh_port: 10022

次にunicorn.rbを更新する。

$ cp unicorn.rb unicorn.rb.bak
$ rm unicorn.rb.example 
$ cp unicorn.rb unicorn.rb.bak
$ wget https://raw.github.com/gitlabhq/gitlabhq/6-0-stable/config/unicorn.rb.example 
$ rm unicorn.rb
$ cp unicorn.rb.example unicorn.rb  
$ vi unicorn.rb

特に変更せずに保存。

※ダウンロード先のバージョンに注意。

起動ファイルのアップデート

ダウンロード先に注意(6.0のinitファイルを)しながら起動ファイルのアップデート。

$ sudo rm /etc/init.d/gitlab
$ sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlabhq/6-0-stable/lib/support/init.d/gitlab 
$ sudo chmod +x /etc/init.d/gitlab

 

GitLab起動

$ sudo service gitlab start

状態確認

$ bundle exec rake gitlab:env:info RAILS_ENV=production
System information
System:          CentOS release 6.4 (Final)
Current User:     git
Using RVM:     yes
RVM Version:     1.19.1
Ruby Version:     1.9.3p392
Gem Version:     1.8.25
Bundler Version:1.3.5
Rake Version:     10.1.0

GitLab information
Version:     6.0.2
Revision:     7e96df0
Directory:     /home/git/gitlab
DB Adapter:     mysql2
URL:          http://example.net
HTTP Clone URL:     http://gitlab.example.net/some-project.git
SSH Clone URL:     ssh://[email protected]:10022/some-project.git
Using LDAP:     no
Using Omniauth:     no

GitLab Shell
Version:     1.7.0
Repositories:     /home/git/repositories/
Hooks:          /home/git/gitlab-shell/hooks/
Git:          /usr/bin/git
$ bundle exec rake gitlab:check RAILS_ENV=production

オールグリーンだったのでOK.

ブラウザからアクセスすると無事GitLab6.0が表示された。

以上。

 

追記:

勢いにのってstable版のある6.1までアップデートしようと思ったが、最後の最後でsidekiqが立ち上がらないバグがあるため6.1は使えない。詳しくはこちら

https://github.com/gitlabhq/gitlabhq/issues/5103


投稿者: しんじ

ベトナムでオフショア開発会社経営中 www.bit-vietnam.com 。サービス開発が趣味。web系は主にPHPで、スマホアプリはswiftで。最近はエンジニア向けの英語勉強webアプリ エングリッシュ e-lish.io を作りました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)