GitLabは最新版を使おう!GitLabのバージョンポリシーとアップグレードの方法

当ブログでは以前GitLabのインストールに関する記事を書かせていただきましたが、今回はその運用にあたって、「バージョンアップ」関連についてです。

前回のインストールについてはこちらをご覧ください。

GitLabのバージョンポリシー

GitLabはセマンティックバージョニングによるリリースを採用しています。そのため、アップグレードはメジャーバージョン、マイナーバージョン、パッチバージョンの3段階で行われます。

参考: GitLab release and maintenance policy

https://docs.gitlab.com/ee/policy/maintenance.html

また、上記サイトにてサポート(パッチが提供されるバージョン)ポリシーについては下記のように記載されています。

> Backporting bug fixes for only the current stable release at any given time. (See patch releases.)

> Backporting security fixes to the previous two monthly releases in addition to the current stable release. (See security releases.)

・バグの修正パッチは現在の安定版に対して提供されます

・セキュリティ関連の修正は上記に加え過去2ヶ月のリリースに対して行われます

2ヶ月以上アップグレードせずに利用をしている場合、セキュリティ脆弱性が含まれたバージョンである可能性は非常に高いと言えるでしょう。大切なソースコードを守るためにも、GitLab を最新の状態に保っておきましょう。

パッチバージョンはバグ修正のみが含まれています。パッチバージョンには新機能などは含まれていません。

GitLabのバージョンアップの仕方

GitLabは基本的にパッチバージョンであればスムーズにアップグレードすることが出来ます。apt-get, yum, dnf, zypperなどで最新のバージョンにアップグレードが可能です。

例(引用元): https://docs.gitlab.com/ee/policy/maintenance.html

# apt-get (Ubuntu/Debian)
sudo apt-get upgrade gitlab-ee=12.0.12-ee.0
# yum (RHEL/CentOS 6 and 7)
yum install gitlab-ee-12.0.12-ee.0.el7
# dnf (RHEL/CentOS 8)
dnf install gitlab-ee-12.0.12-ee.0.el8
# zypper (SUSE)
zypper install gitlab-ee=12.0.12-ee.0

Dockerで使用している場合、GITLAB_HOMEに指定したパスにデータは永続化して保存されているため、アップデート方法はdockerコンテナを停止、削除し、新しいgitlab/gitlab-ee:latestもしくはgitlab/gitlab-ce:latestなどをPullすることでアップグレードが可能です。

ただし、念の為事前のバックアップは行うようご注意ください。バックアップコマンドは下記のとおりです。

`docker exec -t <container name> gitlab-backup create`

アップグレードパスの注意について

GitLabのアップグレードの際には単に最新版にアップグレードするだけではうまく動作しない可能性があります。メジャーアップデートを行う際には、そのメジャーバージョンの中でのマイナーバージョン・パッチバージョンの最新版にアップグレードをした上で、メジャーアップデートを行ってください。

バージョンにより、マイナーバージョンでもBreaking changeが含まれているバージョンがあります。そのため、具体的なアップグレードの順番については下記の公式のドキュメントを御覧ください。

https://docs.gitlab.com/ee/policy/maintenance.html#example-upgrade-paths

たとえば、8.13.4から9系にアップグレードする場合、8.13.4->8.17.7->9.5.10とアップグレードを行う必要があります。

細かに(2ヶ月に1回など)アップグレードしておくと最新版への追従が1個ずつで済み比較的容易ですが、メジャーアップデートが複数挟まるほど古くなる場合、バージョン作業を何度もしなければ最新版にアップグレードすることが出来ず、また、手順をミスした場合に想定外の挙動・エラーが起きてしまう可能性があります。アップグレードパスを守ってアップグレードすることはもちろんですが、可能なら常時最新版にアップグレードするのが良いでしょう。

まとめ

GitLabは非常に高頻度にアップグレードが提供されます。セキュリティパッチは2ヶ月以内にリリースされたバージョンに対してのみ提供されます。そのため、常に安全にGitLabを使うには、下記の2つは必須と言えるでしょう。

・2ヶ月に1回はアップグレードを行う

・セキュリティパッチが出た場合には即座に適用を行う

また、メジャーバージョンアップの際には前のバージョンの最新(最後)のマイナー・パッチバージョンにアップグレードしてから行うことが求められますが、常時最新にしておけば、それを都度調べる必要がなく、結果的に楽である可能性があります。

バージョンアップ(アップグレード)自体はパッケージ管理システムやDockerコマンドから非常に容易に行うことができます。可能な範囲でアップグレードを行い、最新の機能が揃い、バグが少ない最新バージョンを常に使用するのがよいのではないでしょうか。