CentOS
GitLab
centos7

GitLabを7.9.2から7.12.0にアップデートした時の話

More than 1 year has passed since last update.

研究室で公開しているGitLabのアップデート時に苦労したので、備忘録として手順とトラブルシューティングの手順を書いておきます。

今回はCentOS 7に対してGitLab 7.9.2をrpm -ivh gitlab-7.9.2_omnibus-1.el7.x86_64.rpmで手動でインストールした状態から、7.10から追加されたGitLabのリポジトリを追加してGitlab-CE 7.12.0へアップデートした場合の話になります。

手順の流れ

sudoersに追加された一般ユーザで全ての作業を行います。

  1. GitLabのバックアップ
  2. GitLabの停止
  3. リポジトリの追加
  4. GitLabのアップデート
  5. シンボリックリンクの作成
  6. 設定ファイルの再生成
  7. 動作確認
  8. 発生したエラーの修正作業
  9. 再起動&動作確認

1. GitLabのバックアップ

GitLabのバックアップデータは、以下のコマンドを叩くと/var/opt/gitlab/backupsに圧縮されて吐き出されます。
吐き出されたデータとインストール時のRPMパッケージをバックアップすれば基本的に大丈夫だと思いますが、念のため/etc/gitlab/gitlab.rbもバックアップしました。

$ sudo gitlab-rake gitlab:backup:create

2. GitLabの停止

アップデート時に自分で終了しますが、一応手動で終了しておきます。

$ sudo gitlab-ctl stop

3. リポジトリの追加

リポジトリの追加から必要なパッケージのインストールまでの一連の処理を行うシェルスクリプトを開発側が配布しているので、それを実行します。deb系とrpm系で使用するスクリプトが違うので注意が必要です。
サーバの環境上、パッケージのバージョン等に規定がある場合は、entire scriptが参考になると思います。

Upgrade to the package repository | GitLab

基本的に設定ファイルの再生成まではこのリンクのページ内の情報だけでなんとかなります。

4. GitLabのアップデート

注意点としてパッケージ名がgitlabではなくgitlab-ceでした。また、自分の環境ではgitlab-7.9.2_omnibus-1.el7.x86_64.rpmを置き換える旨が表示されました。

$ sudo yum update gitlab-ce

5. シンボリックリンクの作成

GitLabを管理するツール群のシンボリックリンクを/usr/bin内に作成します。

$ sudo ln -sf                     \
  /opt/gitlab/bin/gitlab-ctl      \
  /opt/gitlab/bin/gitlab-rake     \
  /opt/gitlab/bin/gitlab-rails    \
  /opt/gitlab/bin/gitlab-ci-rake  \
  /opt/gitlab/bin/gitlab-ci-rails \
  /usr/bin/

6. 設定ファイルの再生成

自分の環境ではこの段階でGitLabを起動してブラウザからアクセスしてみたところ、500番のエラーが発生しました。その為、/etc/gitlab/gitlab.rbから最新のバージョン向けの設定を生成することを狙ってreconfigureを実行しました。

$ sudo gitlab-ctl reconfigure

7. 動作確認

reconfigureを実行しても正常に動作しなかった為、以下のログを参照にしました。

  • /var/log/gitlab/nginx/gitlab_error.log
  • /var/log/gitlab/unicorn/unicorn_stderr.log
  • 必要に応じて/var/log/gitlab/ディレクトリ内のその他のログ

8. 発生したエラーの修正作業

gitlab-ctl reconfigureの実行時や実際にGitLabを利用した時にエラー等で利用ができない場合、GitLabにはHomebrewのbrew doctorのようなコマンドが存在するので、それを実行して問題点を洗い出していきます。

以下のコマンドを実行します。

$ sudo gitlab-rake gitlab:check

チェック後、修復すべき部分については、以下のような形式でコマンドを実行するよう指示されます。

$ sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

が、GitLabをソースコードからではなく.deb.rpm等のパッケージからインストールした場合は、上の形式ではなく以下のような形式で実行するようになっています。

$ sudo gitlab-rake gitlab:check RAILS_ENV=production

実際にgitlab-rake gitlab:checkにて指示をされたコマンドを例に取ると、以下の様に置き換わります。

$ sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production \\指定されるコマンド

$ sudo gitlab-rake db:migrate RAILS_ENV=production \\実際に実行すべきコマンド

自分の場合、gitlab-rake gitlab:checkを実行してエラーが無くなるまで指示されたコマンドを置き換えて実行を繰り返し、エラーを全て解決しました。

9. 再起動&動作確認

エラーが全て解決できたら、GitLabを再起動後、動作確認をします。

$ sudo gitlab-ctl restart

正常に動作していればアップデート成功です。