GitLabをDebian 11から12へアップグレードする

GitLab-CEをDebian 11上で動かしているので、Debian 12へアップグレードするとともに、GitLabを引き継ぐ。

Debian 11上での作業

現在のGitLabのバージョンを確認する。

% sudo gitlab-rake gitlab:env:info

System information
System:		Debian 11
Current User:	git
Using RVM:	no
Ruby Version:	3.1.5p253
Gem Version:	3.5.9
Bundler Version:2.5.9
Rake Version:	13.0.6
Redis Version:	7.0.15
Sidekiq Version:7.1.6
Go Version:	unknown

GitLab information
Version:	17.0.0
Revision:	d29650c9a04
Directory:	/opt/gitlab/embedded/service/gitlab-rails
DB Adapter:	PostgreSQL
DB Version:	14.11
URL:		https://hogehoge.jp
HTTP Clone URL:	https://hogehoge.jp/some-group/some-project.git
SSH Clone URL:	git@hogehoge.jp:some-group/some-project.git
Using LDAP:	no
Using Omniauth:	yes
Omniauth Providers: 

GitLab Shell
Version:	14.35.0
Repository storages:
- default: 	unix:/var/opt/gitlab/gitaly/gitaly.socket
GitLab Shell path:		/opt/gitlab/embedded/service/gitlab-shell

Gitaly
- default Address: 	unix:/var/opt/gitlab/gitaly/gitaly.socket
- default Version: 	17.0.0
- default Git Version: 	2.44.0.gl2

バックアップコマンドを実行する。バックアップは /var/opt/gitlab/backups以下に生成される。

% sudo gitlab-backup create BACKUP=dump
% sudo ls -1 /var/opt/gitlab/backups
dump_gitlab_backup.tar

続いて、/etc/gitlabの設定ファイルは上記のバックアップに含まれないので別途バックアップをとる。

% sudo gitlab-ctl backup-etc
% sudo ls -1 /etc/gitlab/config_backup
gitlab_config_1715939071_2024_05_17.tar

Debian 11から12へアップグレードする

以下のファイルをbullseye用からbookworm用に書き換える。

  • /etc/apt/sources.list
  • /etc/apt/sources.list.d/gitlab_gitlab-ce.list

/etc/apt/sources.listの中身

deb http://ftp.jp.debian.org/debian/ bookworm main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ bookworm main contrib non-free

deb http://security.debian.org/debian-security bookworm-security main contrib non-free
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free

deb http://ftp.jp.debian.org/debian/ bookworm-updates main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ bookworm-updates main contrib non-free

# proposed-update
deb http://ftp.jp.debian.org/debian/ bookworm-proposed-updates main contrib non-free

/etc/apt/sources.list.d/gitlab_gitlab-ce.listの中身

deb https://packages.gitlab.com/gitlab/gitlab-ce/debian/ bookworm main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/debian/ bookworm main

アップグレード

% sudo apt update
% sudo apt upgrade
% sudo apt dist-upgrade

再起動する。

% sudo reboot

Debian 12上での作業

Debian 12ではいくつか変更があるため、以下のようなエラーがでる。

% sudo apt update
~省略~
W: https://packages.gitlab.com/gitlab/gitlab-ce/debian/dists/bookworm/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://packages.gitlab.com/gitlab/gitlab-ee/debian/dists/bookworm/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
N: Repository 'Debian bookworm' changed its 'non-free component' value from 'non-free' to 'non-free non-free-firmware'
N: More information about this can be found online in the Release notes at: https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.html#non-free-split

変更その1:パッケージの指定にnon-free-firmwareを追加する。
変更その2:apt-keyの利用が非推奨になり、GPGを利用するように言われる。

/etc/apt/sources.listの中身にnon-free-firmwareを追加する。

deb http://ftp.jp.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb-src http://ftp.jp.debian.org/debian/ bookworm main contrib non-free non-free-firmware

deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

deb http://ftp.jp.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
deb-src http://ftp.jp.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware

# proposed-update
deb http://ftp.jp.debian.org/debian/ bookworm-proposed-updates main contrib non-free non-free-firmware

続いて、非推奨となったapt-keyから切り替える。いろいろやり方はあるみたいだけれども以下の方針にする。

  1. リポジトリのGPG鍵は/usr/share/keyringsに保存する。
  2. /etc/sourcelist.d/以下のファイルに[signed-by=/usr/share/keyrings/GPG鍵のファイル名]を追加し、鍵との対応を示す。

GitLab:Update keys after expiry extensionの記述を参考にGPG鍵を作成する。以下のコマンドを実行し、GPG鍵を/usr/share/keyrings/gitlab-ce.gpgとして保存する。

% curl -fsSL https://packages.gitlab.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/gitlab-ce.gpg
% ls -1 /usr/share/keyrings
debian-archive-bookworm-automatic.gpg
debian-archive-bookworm-security-automatic.gpg
debian-archive-bookworm-stable.gpg
debian-archive-bullseye-automatic.gpg
debian-archive-bullseye-security-automatic.gpg
debian-archive-bullseye-stable.gpg
debian-archive-buster-automatic.gpg
debian-archive-buster-security-automatic.gpg
debian-archive-buster-stable.gpg
debian-archive-keyring.gpg
debian-archive-removed-keys.gpg
gitlab-ce.gpg

/etc/apt/sources.list.d/gitlab_gitlab-ce.listの中身を以下のように書き換える。

deb [signed-by=/usr/share/keyrings/gitlab-ce.gpg] https://packages.gitlab.com/gitlab/gitlab-ce/debian/ bookworm main
deb-src [signed-by=/usr/share/keyrings/gitlab-ce.gpg] https://packages.gitlab.com/gitlab/gitlab-ce/debian/ bookworm main

以上でエラーが発生しなくなる。

% sudo apt update
ヒット:1 http://security.debian.org/debian-security bookworm-security InRelease
ヒット:2 http://deb.debian.org/debian bookworm InRelease                       
ヒット:3 http://deb.debian.org/debian bookworm-updates InRelease
ヒット:4 http://deb.debian.org/debian bookworm-proposed-updates InRelease
ヒット:5 https://packages.gitlab.com/gitlab/gitlab-ce/debian bookworm InRelease
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了        

Gitlabについて、特に問題なくDebian 12へのアップグレードとともにGitLab-CEも引き継がれたみたい。

$ dpkg -l | grep gitlab
ii  gitlab-ce                         17.0.0-ce.0                             amd64        GitLab Community Edition (including NGINX, Postgres, Redis)

現在のGitLabのバージョンを確認する。

% sudo gitlab-rake gitlab:env:info

System information
System:		Debian 12
Current User:	git
Using RVM:	no
Ruby Version:	3.1.5p253
Gem Version:	3.5.9
Bundler Version:2.5.9
Rake Version:	13.0.6
Redis Version:	7.0.15
Sidekiq Version:7.1.6
Go Version:	unknown

GitLab information
Version:	17.0.0
Revision:	d29650c9a04
Directory:	/opt/gitlab/embedded/service/gitlab-rails
DB Adapter:	PostgreSQL
DB Version:	14.11
URL:		https://hogehoge.jp
HTTP Clone URL:	https://hogehoge.jp/some-group/some-project.git
SSH Clone URL:	git@hogehoge.jp:some-group/some-project.git
Using LDAP:	no
Using Omniauth:	yes
Omniauth Providers: 

GitLab Shell
Version:	14.35.0
Repository storages:
- default: 	unix:/var/opt/gitlab/gitaly/gitaly.socket
GitLab Shell path:		/opt/gitlab/embedded/service/gitlab-shell

Gitaly
- default Address: 	unix:/var/opt/gitlab/gitaly/gitaly.socket
- default Version: 	17.0.0
- default Git Version: 	2.44.0.gl2