GitLabのアップデート

GitLabでプッシュやマージリクエストを投げるとRocketChatに自動的に通知が行くように設定ができると聞いて試してみたくなりました。が、設定する項目が見当たらず……どうやら、バージョンが足りていないようです。

ということで、GitLabサーバのアップデートをすることにしました。

アップデート実行前のバージョン情報。10.3.1-eeと表示されています。
アップデート実行前のバージョン情報。10.3.1-eeと表示されています。

最初のバージョンは10.3.1-ee。ちなみにOmnibus Packageです。

まずはバックアップを取るところから。

# gitlab-rake gitlab:backup:create STRATEGY=copy

ほどなくしてバックアップ完了。続いて本番のアップデートを。

ただ、いくつかの記事を見ると必ず10.8系を経由しないとその上にはアップデートできないようなので、10.3.110.8系→11、と段階を踏んでアップデートします。

それから、参考記事はceの話をしていますが、今回はeeについて実施しています。

それを踏まえた上で、バージョンを確認。

# yum list --showduplicates gitlab-ee
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * updates: ftp.nara.wide.ad.jp
インストール済みパッケージ
gitlab-ee.x86_64             10.3.1-ee.0.el7                   @gitlab_gitlab-ee
利用可能なパッケージ
gitlab-ee.x86_64             7.11.2~ee.omnibus-1               gitlab_gitlab-ee
gitlab-ee.x86_64             7.11.3~ee.omnibus-1               gitlab_gitlab-ee

## 略

ずらずらっと並びますが、その中から10.8系の10.8.0-ee.0.el7を選択してアップデートします。

# yum install gitlab-ee-10.8.0-ee.0.el7

## 略

Deprecations:

* Mattermost
        Detected deprecated Mattermost settings. Starting with GitLab 11.0, these settings are no longer supported.
        Check http://docs.gitlab.com/omnibus/gitlab-mattermost/#upgrading-gitlab-mattermost-from-versions-prior-to-11-0 for details.

        * mattermost['email_enable_sign_up_with_email']
        * mattermost['email_enable_sign_in_with_email']
        * mattermost['email_enable_sign_in_with_username']

gitlab Reconfigured!
Checking for an omnibus managed postgresql: OK
Checking for a newer version of PostgreSQL to install
No new version of PostgreSQL installed, nothing to upgrade to
Ensuring PostgreSQL is updated: OK
Restarting previously running GitLab services
ok: run: gitaly: (pid 11451) 2s
ok: run: gitlab-monitor: (pid 11518) 1s
ok: run: gitlab-workhorse: (pid 11438) 4s
ok: run: logrotate: (pid 11522) 0s
ok: run: nginx: (pid 11528) 1s
ok: run: node-exporter: (pid 11610) 0s
ok: run: postgres-exporter: (pid 11616) 1s
ok: run: postgresql: (pid 11267) 96s
ok: run: prometheus: (pid 11467) 5s
ok: run: redis: (pid 11252) 98s
ok: run: redis-exporter: (pid 11627) 0s
ok: run: sidekiq: (pid 11633) 0s
ok: run: unicorn: (pid 11640) 1s

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


Upgrade complete! If your GitLab server is misbehaving try running
  sudo gitlab-ctl restart
before anything else.
If you need to roll back to the previous version you can use the database
backup made during the upgrade (scroll up for the filename).

  検証中                  : gitlab-ee-10.8.0-ee.0.el7.x86_64                                                                                                                             1/2
  検証中                  : gitlab-ee-10.3.1-ee.0.el7.x86_64                                                                                                                             2/2

更新:
  gitlab-ee.x86_64 0:10.8.0-ee.0.el7

完了しました!

OK。上がりました。

1回目のアップデート実行後のバージョン情報。10.8.0-eeと表示されています。
1回目のアップデート実行後のバージョン情報。10.8.0-eeと表示されています。

管理者でサインインしてみると、バージョン情報のところで10.8.0-eeと表示されています。無事上がっていますね。

続いて、11.11.0-ee.0.el7にアップデートを試みます。

# yum install gitlab-ee-11.11.0-ee.0.el7

## 略

失敗:
  gitlab-ee.x86_64 0:11.11.0-ee.0.el7                                                          gitlab-ee.x86_64 0:11.11.0-ee.0.el7

完了しました!

あれ、失敗してしまいました。

この時点でログをよく見れば良かったのですが、面倒だったので記事と同じバージョン(11.0.4)を試すことにしました。

# yum install gitlab-ee-11.0.4-ee.0.el7

## 略

gitlab-ee-11.0.4-ee.0.el7.x86_64.rpm                                                                                                                                  | 475 MB  00:00:24
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
* mattermost['service_allowed_untrusted_internal_connections'] has been deprecated since 10.2 and removed in 11.0.
Deprecations found. Please correct them and try again.
error: %pre(gitlab-ee-11.0.4-ee.0.el7.x86_64) scriptlet failed, exit status 1
Error in PREIN scriptlet in rpm package gitlab-ee-11.0.4-ee.0.el7.x86_64
  検証中                  : gitlab-ee-11.0.4-ee.0.el7.x86_64                                                                                                                             1/2
gitlab-ee-10.8.0-ee.0.el7.x86_64 was supposed to be removed but is not!
  検証中                  : gitlab-ee-10.8.0-ee.0.el7.x86_64                                                                                                                             2/2

失敗:
  gitlab-ee.x86_64 0:10.8.0-ee.0.el7                                                            gitlab-ee.x86_64 0:11.0.4-ee.0.el7

完了しました!

同じエラーです。これは何かがおかしい、ということで実行ログをよく見てみることに。

すると、上記ログで、「Mattermost関係のservice_allowed_untrusted_internal_connectionsというパラメータがバージョン11で廃止されているので、該当パラメータを削除してからもう一度実行してね」ということのようです。

では、設定ファイルを編集しましょうか。

# gitlab-ctl stop
ok: down: alertmanager: 1s, normally up
ok: down: gitaly: 0s, normally up
ok: down: gitlab-monitor: 1s, normally up
ok: down: gitlab-workhorse: 0s, normally up
ok: down: logrotate: 1s, normally up
ok: down: nginx: 0s, normally up
ok: down: node-exporter: 0s, normally up
ok: down: postgres-exporter: 1s, normally up
ok: down: postgresql: 0s, normally up
ok: down: prometheus: 0s, normally up
ok: down: redis: 0s, normally up
ok: down: redis-exporter: 1s, normally up
ok: down: sidekiq: 0s, normally up
ok: down: unicorn: 1s, normally up

GitLabを停止して、

# vi /etc/gitlab/gitlab.rb

# mattermost['service_enable_insecure_outgoing_connections'] = false
# mattermost['service_allowed_untrusted_internal_connections'] = "" #削除
# mattermost['service_allow_cors_from'] = ""

……コメントアウトされていますが、削除しますか。該当業を削除します。

# sudo gitlab-ctl reconfigure
Starting Chef Client, version 13.6.4
resolving cookbooks for run list: ["gitlab-ee"]

## 略

gitlab Reconfigured!

編集が完了したら、reconfigureを実行してビルドします。

# gitlab-ctl start
ok: run: alertmanager: (pid 14523) 1s
ok: run: gitaly: (pid 14533) 0s
ok: run: gitlab-monitor: (pid 14544) 0s
ok: run: gitlab-workhorse: (pid 14548) 1s
ok: run: logrotate: (pid 14564) 0s
ok: run: nginx: (pid 14572) 1s
ok: run: node-exporter: (pid 14580) 0s
ok: run: postgres-exporter: (pid 14586) 1s
ok: run: postgresql: (pid 14592) 0s
ok: run: prometheus: (pid 14600) 0s
ok: run: redis: (pid 14612) 1s
ok: run: redis-exporter: (pid 14616) 0s
ok: run: sidekiq: (pid 14695) 1s
ok: run: unicorn: (pid 14702) 0s

GitLabを起動しなおして、再度アップデートを実行。

# yum install gitlab-ee-11.0.4-ee.0.el7

## 略

失敗:
  gitlab-ee.x86_64 0:10.8.0-ee.0.el7                                                            gitlab-ee.x86_64 0:11.0.4-ee.0.el7

完了しました!

……同じエラーでコケました。何故……。

仕方ないのでエラー内容でググってみます。

すると、こんなスレッドが。

「GitLabは実際にはjsonファイルを読みに行くから、jsonファイルから該当パラメータを削除してね。ちなみに、reconfigureするとjsonが自動生成されてパラメータが復活するからreconfigureしないままでアップデートしてね(超意訳)」という内容の書き込みが。

……なんですって?

ちなみにjsonファイルは/opt/gitlab/embedded/nodes/HOST_NAME.json(HOST_NAMEはサーバの名前)で保存されるようです。なのでこれを編集。

service_allowed_untrusted_internal_connectionsは2箇所ありますが、両方とも削除します。

# vi /opt/gitlab/embedded/nodes/HOST_NAME.json

      "gitlab-rails": {
//略
      "host": "mattermost.HOST_NAME:20160",
      "service_site_url": "http://mattermost.HOST_NAME:20160",
      "service_allowed_untrusted_internal_connections": "HOST_NAME", //削除
      "port": 20160
    }

 "default": {
//略
      "services": [
//略
      "service_enable_insecure_outgoing_connections": false,
      "service_allowed_untrusted_internal_connections": null, //削除
      "service_allow_cors_from": null,
//略

編集完了した状態で、リビルドもGitLabの停止も何もせずアップデートを再度実行。

# yum install gitlab-ee-11.0.4-ee.0.el7

## 略

Running handlers:
Running handlers complete
Chef Client finished, 23/584 resources updated in 01 minutes 31 seconds
gitlab Reconfigured!
Checking for an omnibus managed postgresql: OK
Checking for a newer version of PostgreSQL to install
No new version of PostgreSQL installed, nothing to upgrade to
Ensuring PostgreSQL is updated: OK
Restarting previously running GitLab services
ok: run: alertmanager: (pid 22571) 0s
ok: run: gitaly: (pid 22523) 3s
ok: run: gitlab-monitor: (pid 22582) 0s
ok: run: gitlab-workhorse: (pid 22508) 4s
ok: run: logrotate: (pid 22594) 1s
ok: run: nginx: (pid 22666) 0s
ok: run: node-exporter: (pid 22674) 1s
ok: run: postgres-exporter: (pid 22680) 0s
ok: run: postgresql: (pid 14592) 3858s
ok: run: prometheus: (pid 22540) 5s
ok: run: redis: (pid 14612) 3858s
ok: run: redis-exporter: (pid 22692) 1s
ok: run: sidekiq: (pid 22705) 0s
ok: run: unicorn: (pid 22712) 0s

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


Upgrade complete! If your GitLab server is misbehaving try running
  sudo gitlab-ctl restart
before anything else.
If you need to roll back to the previous version you can use the database
backup made during the upgrade (scroll up for the filename).

  検証中                  : gitlab-ee-11.0.4-ee.0.el7.x86_64                                                                                                                             1/2
  検証中                  : gitlab-ee-10.8.0-ee.0.el7.x86_64                                                                                                                             2/2

更新:
  gitlab-ee.x86_64 0:11.0.4-ee.0.el7

完了しました!

今度は成功しました。やはり先ほどのjsonファイルで良かったようです。

これで最後まで行けると思うので、最新までアップデートします。

# yum install gitlab-ee

## 略

gitlab Reconfigured!
Restarting previously running GitLab services
ok: run: alertmanager: (pid 25231) 1s
ok: run: gitaly: (pid 25021) 6s
ok: run: gitlab-monitor: (pid 25092) 4s
ok: run: gitlab-workhorse: (pid 25056) 5s
ok: run: logrotate: (pid 25266) 1s
ok: run: nginx: (pid 25272) 0s
ok: run: node-exporter: (pid 25081) 6s
ok: run: postgres-exporter: (pid 25254) 1s
ok: run: postgresql: (pid 14592) 4423s
ok: run: prometheus: (pid 25119) 4s
ok: run: redis: (pid 24691) 91s
ok: run: redis-exporter: (pid 25103) 4s
ok: run: sidekiq: (pid 25287) 1s
ok: run: unicorn: (pid 25295) 0s

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


Upgrade complete! If your GitLab server is misbehaving try running
  sudo gitlab-ctl restart
before anything else.
If you need to roll back to the previous version you can use the database
backup made during the upgrade (scroll up for the filename).

  検証中                  : gitlab-ee-11.11.0-ee.0.el7.x86_64                                                                                                                            1/2
  検証中                  : gitlab-ee-11.0.4-ee.0.el7.x86_64                                                                                                                             2/2

更新:
  gitlab-ee.x86_64 0:11.11.0-ee.0.el7

完了しました!

最新までアップデートできました。

最終アップデート実行後のバージョン情報。11.11.0-eeと表示されています。
最終アップデート実行後のバージョン情報。11.11.0-eeと表示されています。

後はRocketChatとの連携の設定ですね。

参考

バックアップ

アップデート

この記事を書いた人

アバター

アルム=バンド

フルスタックエンジニアっぽい何か。LAMPやNodeからWP、gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。