仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

社内GitLabをアップデートした

昔なんとなく立てた社内GitLabが立ててからだいぶ経ったような気がしたので、アップデートしました。最近のGitLabはあの特徴的なアイコンがモダンな感じになって良いですね。

さて、前のバージョンが6.4.3という古めのバージョンで、昔の手順(Chef Soloかな)でインストールされたものだったため、debパッケージで簡単に導入できる最新バージョンに移行する手順がやや複雑でした。OSもUbuntu12.04と少し古めになっていたため、14.04で新規に作った環境に移していく方法にしました。

作業については、こちらの記事が大変参考になりました。ありがとうございました。

http://rythgs.co/archives/2015/10/31/switch-omnibus-gitlab/

ちょっと違うやり方もしたので、自分のメモがてらざっくりと書いておきます。

新サーバーにGitLab 7.14.3を用意

ダウンロードページの案内を参考にリポジトリの追加を行いますが、インストールはapt-get install gitlab-ceではなく、バージョン7.14.3のパッケージをダウンロードしてdpkgでインストールしました。よく考えたらapt-getでもバージョン指定できたような気がします。

/etc/gitlab/gitlab.rbの設定を適宜行って、しばし置いておきます。

既存GitLabサーバーをGitLab 7.13.4にアップデート

既存GitLabは、公式の手順書を参考に進めますが、GitLab 7.13.4のバージョン用にアップデートされたデータベースさえ取得できればこのサーバーはもう不要になるため、いくつかの手順を端折りました。

  • 2.Update Rubyをスキップ(すでにRuby 2.0.0で稼働していたため)
  • 5.Configure Redis to use socketsをスキップ(DBアップデート・エクスポートに関係しなかったため)
  • 7.Install libs, migrations, etc.まで作業をしたらDBアップデートは終わり(8番の設定関係は必要に応じて確認すると良いと思います)

DBのアップデートが終わったら、こちらの公式ドキュメントを参考にMySQLからPostgreSQLにデータベースを変換します。新しいGitLabではPostgreSQLを使用するようです。

https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/mysql_to_postgresql.md#converting-a-gitlab-backup-file-from-mysql-to-postgres

変換したDBのデータをインポート

以下のドキュメントを参考に、変換したあとのデータを新サーバーにコピーして、インポートを実行します。

https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/raketasks/backup_restore.md#omnibus-installations

ここまでで、新しいサーバー上でGitLab 7.14.3が動作し、データの移行も無事に済みました。

GitLab 8.2.3にアップデートする

新しい環境はDebianパッケージで管理されていますので、apt-getで簡単にアップデートできるようになっています。なので、以下のコマンドを実行するだけとなります。

$ sudo apt-get update
$ sudo apt-get upgrade

まとめ

以前にアップデートを試した時は、いろいろハマってくじけたことがあったのでうまくいくかドキドキしましたが、おかげさまでなんとか最近環境に移行することができました。

弊社社内GitLabの場合はVMware上の仮想マシンで動いていたため、クローンをして移行テストをしてみたり、スナップショットでいつでも戻れるようにして作業を進めました。同じように仮想環境で作業される方もそんな感じで安全に進めていただければと思います。