Debian 10 + GitLab CE 17.5.5 アップグレード検証

# 経緯

職場でオンプレミスの筐体にインストールしたGitLab CE（Community Edition） self-hostedをインストールして運用しています。
AWSへのデプロイや社内のRunnerを使ってビルドとかしていたりして、結構重要なサーバーだったります。
月に1度、このGitLabをアップグレードしていたのですが、ある時から`v17.5.5`からアップグレードできなくなりました。
`apt-get update`しても`v.17.5.5`以降のパッケージが出てこなくなりました。
17.8系からOpenSSL3が必要とのことだったので、その影響かなと思ったので、OSごとアップグレードすることを検討し、検証してみました。

# 結論

Debian 10にGitLabをインストールしているのですが、これ後でわかったのですが、GitLab CEのDebian 10のリポジトリには`v17.5.5`までしかないみたいです。
以下の表を見るとDebian 10のLTS保守期限終わったあとに大体終わっているみたいです。

## Debian保守期限とGitLabのリポジトリ

|OS Version|Code Name|保守期限(LTS)|`gitlab-ce 17.6` Repository|
|:---|:---|:---|:---|
|Debian 10|Buster|2024年6月30日|[gitlab-ce_17.6 buster](https://packages.gitlab.com/app/gitlab/gitlab-ce/search?q=gitlab-ce_17.6&filter=all&filter=all&dist=debian%2Fbuster)|
|Debian 11|Bullseye|2026年8月31日|[gitlab-ce_17.6 bullseye](https://packages.gitlab.com/app/gitlab/gitlab-ce/search?q=gitlab-ce_17.6&filter=all&filter=all&dist=debian%2Fbullseye)|
|Debian 12|Bookworm|2028年6月30日|[gitlab-ce_17.6 bookworm](https://packages.gitlab.com/app/gitlab/gitlab-ce/search?q=gitlab-ce_17.6&filter=all&filter=all&dist=debian%2Fbookworm)|

- 参考
    - https://wiki.debian.org/LTS
    - https://ja.wikipedia.org/wiki/Debian#%E5%85%AC%E9%96%8B/%E9%96%8B%E7%99%BA%E5%B1%A5%E6%AD%B4

## GitLabのリリース

|Version|Release Date|
|:---|:---|
|17.1|2024年6月20日|
|17.2|2024年7月18日|
|17.3|2024年8月15日|
|17.4|2024年9月19日|
|17.5|2024年10月17日|
|17.6|2024年11月21日|
|17.7|2024年12月19日|
|17.8|2025年1月16日|
|17.9|2025年2月20日|

- 参考
    - https://about.gitlab.com/releases/

# アップグレードの道

OpenSSL3への対応が必要な認識があったので、Debian 10にOpenSSL3を手動で入れようかと思ったのですが、検証の結果やめました。
Debianを最新のバージョンまでアップグレードすることにします。

## VMの準備

ProxmoxにとりあえずDebian 10 + GitLab CE 17.5.5の環境を構築します。

```
# アップグレード
apt-get update

# 必要なパッケージをインストール
apt-get install -y curl openssh-server ca-certificates perl

# gitlab-ceのインストール
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
apt-get update
apt-cache madison
apt-get install gitlab-ce

# インストール可能なバージョンの確認
apt-cache madison gitlab-ce | head -n 5

# GitLabの設定
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
vi /etc/gitlab/gitlab.rb

# 設定して起動
gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-ctl status

# rootパスワード
cat /etc/gitlab/initial_root_password

# OpenSSLのバージョン確認
```

接続確認できたらVMを停止して、クローンして起動します。

## VMの準備

以下を参考にしますが、所々コマンドが怪しいので、書き直します。

- https://gist.github.com/rrottmann/b0f371a62950a9e149c4358772c5a647
- https://github.com/lxc/lxc-templates/issues/54

`-y`オプションで、基本的に手放しでインストールしたほうがいいのですが、`*** vimrc (Y/I/N/O/D/Z) [default=N] ?`といった質問だけされる場合があるので、対応する必要があります。自分は`N`にしました。

### Debian 10 -> Debian 11

```
apt-get -y update
apt-get -y upgrade --without-new-pkgs
apt-get -y full-upgrade

mv /etc/apt/sources.list /etc/apt/sources.list.debian10

cat > /etc/apt/sources.list <<"EOF"
deb http://deb.debian.org/debian/ bullseye main
deb-src http://deb.debian.org/debian/ bullseye main
deb http://security.debian.org/ bullseye-security main
deb http://security.debian.org/debian-security bullseye-security main
deb http://deb.debian.org/debian/ bullseye-updates main
deb-src http://deb.debian.org/debian/ bullseye-updates main
EOF

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 605C66F00D6C9793 6ED0E7B82643E131 0E98404D386FA1D9
apt-get clean
apt-get -y update
apt-get -y upgrade --without-new-pkgs
apt-get -y full-upgrade

reboot
```

### Debian 11 -> Debian 12

```
mv /etc/apt/sources.list /etc/apt/sources.list.debian11

cat > /etc/apt/sources.list <<"EOF"
deb http://deb.debian.org/debian/ bookworm main
deb-src http://deb.debian.org/debian/ bookworm main
deb http://security.debian.org/ bookworm-security main
deb http://security.debian.org/debian-security bookworm-security main
deb http://deb.debian.org/debian/ bookworm-updates main
deb-src http://deb.debian.org/debian/ bookworm-updates main
EOF

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BDE6D2B9216EC7A8
apt-get clean
apt-get -y update
apt-get -y upgrade --without-new-pkgs
apt-get -y full-upgrade

# issue with libcrypt.so.1
apt-get --download-only install libcrypt1
cd /var/cache/apt/archives/
dpkg-deb -x libcrypt1_1*a4.4.33-2_amd64.deb .
cp -av lib/x86_64-linux-gnu/* /lib/x86_64-linux-gnu/
apt-get -y --fix-broken install
apt-get -y upgrade --without-new-pkgs
apt-get -y full-upgrade
apt-get -y autoremove

reboot
```

### GitLab CE 17.5.5 -> 17.8.2 (latest at the time)

アップグレード方法はGitLabのUpgrade Pathに従ってください。
今回は、`17.5.5 -> 17.8.2` `Edition = Community` `Distro = Ubuntu`でコマンドを生成します。
https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/

```
# Check openssl version
openssl version
 OpenSSL 3.0.15 3 Sep 2024 (Library: OpenSSL 3.0.15 3 Sep 2024)

# Change gitlab repository for current debian OS
sed -i 's/buster/bookworm/g' /etc/apt/sources.list.d/gitlab_gitlab-ce.list

# Upgrade gitlab-ce 17.5.5 to 17.8.2 (latest at the time)
apt-get update
apt-cache madison gitlab-ce | head -n 5
 gitlab-ce | 17.8.2-ce.0 | https://packages.gitlab.com/gitlab/gitlab-ce/debian bookworm/main amd64 Packages
 gitlab-ce | 17.8.1-ce.0 | https://packages.gitlab.com/gitlab/gitlab-ce/debian bookworm/main amd64 Packages
 gitlab-ce | 17.8.0-ce.0 | https://packages.gitlab.com/gitlab/gitlab-ce/debian bookworm/main amd64 Packages
 gitlab-ce | 17.7.4-ce.0 | https://packages.gitlab.com/gitlab/gitlab-ce/debian bookworm/main amd64 Packages
 gitlab-ce | 17.7.3-ce.0 | https://packages.gitlab.com/gitlab/gitlab-ce/debian bookworm/main amd64 Packages
apt-get install gitlab-ce=17.8.2-ce.0
```