セルフコンパイル・インストールのアップグレード

インストールしたいGitLabのブランチ(バージョン)からこのアップグレードガイドを見てください(例えば、16.0 )。GitLabドキュメントページの右上にあるドロップダウンリストで、必要なバージョンのドキュメントを選択できます。

以下の各例では、BRANCH をアップグレードするバージョンのブランチに置き換えてください(例えば、16.016-0-stable )。PREVIOUS_BRANCH をアップグレード元のバージョンのブランチに置き換えてください(例えば、15-11-stable15.11)。

最上位の安定版ブランチが不明な場合は、GitLab ブログでバージョンごとのインストールガイドリンクを確認してください。

GitLab Community EditionからGitLab Enterprise Editionに変更する場合は、CEからEEへのアップグレードのドキュメントをご覧ください。

新しいメジャーバージョンへのアップグレード

メジャーバージョンは後方互換性のない変更のために予約されています。まず、現在のメジャーバージョンで利用可能な最新のマイナーバージョンにアップグレードしてください。アップグレードの推奨事項に従って、理想的なアップグレードパスを特定してください。

新しいメジャーバージョンにアップグレードする前に、以前のリリースからのバックグラウンドマイグレーションジョブが完了していることを確認する必要があります。background_migration キューの現在のサイズを確認するには、アップグレード前にバックグラウンドマイグレーションを確認してください。

全バージョンのガイドライン

このセクションでは、アップグレード先のバージョンに関係なく、コミュニティ版またはエンタープライズ版のアップグレードに必要なすべての手順を説明します。バージョン固有のガイドラインがある場合は、個別に説明します。

1.バックアップ

前提条件:

  • rsync がインストールされていることを確認してください。

バックアップを実行してください:

cd /home/git/gitlab

sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production

2.サーバーの停止

# For systems running systemd
sudo systemctl stop gitlab.target

# For systems running SysV init
sudo service gitlab stop

3.Rubyの更新

GitLab 15.10からはRuby 3.0.xのみをサポートし、Ruby 2.7のサポートは終了しました。必要に応じてアップグレードしてください。どのバージョンを使っているかはruby -v で確認できます。

Rubyをインストールします。

4.Node.jsのアップデート

最低限必要なNode.jsのバージョンを確認するには、Node.jsのバージョンを参照してください。

また、GitLabではJavaScriptの依存関係を管理するためにYarn>= v1.10.0 を使用する必要があります。

DebianやUbuntuの場合:

sudo apt-get remove yarn

npm install --global yarn

より詳しい情報はYarnのウェブサイトをご覧ください。

5.更新情報

最低限必要な Go バージョンを確認するには、Go バージョンを参照してください。

どのバージョンを実行しているかは、go version で確認できます。

Go(Linux、64ビット用)をダウンロードしてインストールしてください:

# Remove former Go installation folder
sudo rm -rf /usr/local/go

curl --remote-name --location --progress-bar "https://go.dev/dl/go1.19.10.linux-amd64.tar.gz"
echo '8b045a483d3895c6edba2e90a9189262876190dbbd21756870cdd63821810677  go1.19.10.linux-amd64.tar.gz' | shasum -a256 -c - && \
  sudo tar -C /usr/local -xzf go1.19.10.linux-amd64.tar.gz
sudo ln -sf /usr/local/go/bin/{go,gofmt} /usr/local/bin/
rm go1.19.10.linux-amd64.tar.gz

6.Gitのアップデート

Git のバージョンが必要最低限であることを確認するには、Git のバージョンをご覧ください。

GitLab 13.6からは、Gitalyが提供するGitバージョンを使用する必要があります:

  • 常にGitLabが要求するバージョンです。
  • 適切なオペレーションに必要なカスタムパッチを含むことがあります。
# Install dependencies
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev libpcre2-dev build-essential

# Clone the Gitaly repository
git clone https://gitlab.com/gitlab-org/gitaly.git -b <X-Y-stable> /tmp/gitaly

# Compile and install Git
cd /tmp/gitaly
sudo make git GIT_PREFIX=/usr/local

<X-Y-stable> 、インストールしたいGitLabのバージョンに合った安定版ブランチに置き換えてください。例えば、GitLab 13.6をインストールしたい場合は、ブランチ名13-6-stable

config/gitlab.ymlgit -> bin_path/usr/local/bin/git に設定することを忘れないでください。

7.PostgreSQLの更新

caution
GitLab 16.0は少なくともPostgreSQL 13が必要です。

GitLabの最新バージョンは、あなたが実行しているものよりも新しいPostgreSQLのバージョンに依存するかもしれません。また、いくつかの拡張機能を有効にする必要があるかもしれません。詳しくはPostgreSQLの要件をご覧ください。

PostgreSQL をアップグレードするには、そのドキュメントを参照してください。

8.最新のコードを取得

cd /home/git/gitlab

sudo -u git -H git fetch --all --prune
sudo -u git -H git checkout -- Gemfile.lock db/structure.sql locale

GitLab Community Edition:

cd /home/git/gitlab

sudo -u git -H git checkout BRANCH

または

GitLab Enterprise Editionの場合:

cd /home/git/gitlab

sudo -u git -H git checkout BRANCH-ee

9.設定ファイルの更新

新しい設定オプションgitlab.yml

gitlab.yml) に利用可能な設定オプションがあるかもしれません。以下のコマンドで表示し、手動で現在のgitlab.yml に適用してください:

cd /home/git/gitlab

git diff origin/PREVIOUS_BRANCH:config/gitlab.yml.example origin/BRANCH:config/gitlab.yml.example

新しい設定オプションdatabase.yml

GitLab 16.0 でconfig/database.yml.postgresqlci: セクションが追加れました。

database.ymlで利用可能な設定オプションがあるかもしれません。以下のコマンドでそれらを表示し、手動で現在のdatabase.ymlに適用してください:

cd /home/git/gitlab

git diff origin/PREVIOUS_BRANCH:config/database.yml.postgresql origin/BRANCH:config/database.yml.postgresql

NGINX 設定

最新のNGINX設定変更に対応していることを確認してください:

cd /home/git/gitlab

# For HTTPS configurations
git diff origin/PREVIOUS_BRANCH:lib/support/nginx/gitlab-ssl origin/BRANCH:lib/support/nginx/gitlab-ssl

# For HTTP configurations
git diff origin/PREVIOUS_BRANCH:lib/support/nginx/gitlab origin/BRANCH:lib/support/nginx/gitlab

インストールでStrict-Transport-Securityを使用している場合、使用を続けるにはNGINXの設定で有効にする必要があります。これは、GitLabアプリケーションがそれを設定しなくなったためです。

NGINXの代わりにApacheを使用している場合は、更新されたApacheテンプレートを参照してください。また、ApacheはUnixソケットでのアップストリームをサポートしていないため、GitLab WorkhorseにTCPポートをリッスンさせる必要があります。これには/etc/default/gitlabを使います。

SMTP の設定

メールの配信に SMTP を使用する場合は、config/initializers/smtp_settings.rb に以下の行を追加する必要があります:

ActionMailer::Base.delivery_method = :smtp

例としてsmtp_settings.rb.sample をご覧ください。

systemd ユニットの設定

SysV init スクリプトを使用している場合は、SysV init スクリプトの設定を参照してください。

systemd ユニットが更新されているか確認してください:

cd /home/git/gitlab

git diff origin/PREVIOUS_BRANCH:lib/support/systemd origin/BRANCH:lib/support/systemd

コピーしてください:

sudo mkdir -p /usr/local/lib/systemd/system
sudo cp lib/support/systemd/* /usr/local/lib/systemd/system/
sudo systemctl daemon-reload

SysV initスクリプトの設定

systemd ユニットを使用している場合は、systemd ユニットの設定を参照してください。

gitlab.default.example で利用可能な新しい設定オプションがあるかもしれません。以下のコマンドで表示し、手動で現在の/etc/default/gitlab に適用してください:

cd /home/git/gitlab

git diff origin/PREVIOUS_BRANCH:lib/support/init.d/gitlab.default.example origin/BRANCH:lib/support/init.d/gitlab.default.example

最新のinitスクリプトの変更を確認してください:

cd /home/git/gitlab

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab

systemd を init として実行しているシステムで init スクリプトを使用している場合、systemd のネイティブユニットにまだ切り替えていないのであれば、実行してください:

sudo systemctl daemon-reload

10.ライブラリやマイグレーションなどのインストール

必要なPostgreSQL拡張があることを確認してから、必要なライブラリのインストールを進めてください:

cd /home/git/gitlab

# If you haven't done so during installation or a previous upgrade already
sudo -u git -H bundle config set --local deployment 'true'
sudo -u git -H bundle config set --local without 'development test mysql aws kerberos'

# Update gems
sudo -u git -H bundle install

# Optional: clean up old gems
sudo -u git -H bundle clean

# Run database migrations
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production

# Update node dependencies and recompile assets
sudo -u git -H bundle exec rake yarn:install gitlab:assets:clean gitlab:assets:compile RAILS_ENV=production NODE_ENV=production NODE_OPTIONS="--max_old_space_size=4096"

# Clean up cache
sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production

11.GitLab Shell のアップデート

cd /home/git/gitlab-shell

sudo -u git -H git fetch --all --tags --prune
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_SHELL_VERSION)
sudo -u git -H make build

12.GitLab Workhorseのアップデート

GitLab Workhorseをインストールしてコンパイルします。

cd /home/git/gitlab

sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=production

13.Gitalyのアップデート

Gitalyが独自のサーバーに配置されている場合、またはGitalyクラスターを使用している場合は、ゼロダウンタイム・アップグレードのページのGitalyまたはGitalyクラスターを参照してください。

Gitalyのコンパイル

# Fetch Gitaly source with Git and compile with Go
cd /home/git/gitlab
sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,/home/git/repositories]" RAILS_ENV=production

14.GitLabページの更新

GitLab Pagesを使う場合のみ必要です。

GitLab Pagesをインストールしてコンパイルします。GitLab PagesはGNU Makeを使います。Linuxを使用していない場合は、以下のmake の代わりにgmake を実行する必要があるかもしれません。

cd /home/git/gitlab-pages

sudo -u git -H git fetch --all --tags --prune
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION)
sudo -u git -H make

15.アプリケーションの起動

# For systems running systemd
sudo systemctl start gitlab.target
sudo systemctl restart nginx.service

# For systems running SysV init
sudo service gitlab start
sudo service nginx restart

16.申込状況の確認

GitLabとその環境が正しく設定されているかを確認します:

cd /home/git/gitlab

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

見落としがないように、より徹底的なチェックを行いましょう:

cd /home/git/gitlab

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

すべての項目が緑色になっていれば、アップグレードは完了です!

バージョン固有の変更

バージョンのアップグレードには手動操作が必要な場合があります。詳細については、すべてのGitLabインストールに必要な追加の手順や、セルフコンパイルしたインストールに適用される手順について、アップグレード先のバージョンを確認してください。

トラブルシューティング

1.コードを以前のバージョンに戻します。

以前のバージョンに戻すには、以前のバージョンのアップグレードガイドに従わなければなりません。

例えば、GitLab 12.6にアップグレードして12.5に戻したい場合は、12.4から12.5へのアップグレードガイドに従ってください。ページの上部にあるバージョンのドロップダウンリストを使って、正しいバージョンを選択することができます。

バックアップはすでに以前のバージョンにマイグレーションされているため、マイグレーションガイドに従わないでください。

2.バックアップからの復元

cd /home/git/gitlab

sudo -u git -H bundle exec rake gitlab:backup:restore RAILS_ENV=production

複数のバックアップファイル(*.tar )がある場合は、上記にBACKUP=timestamp_of_backup を追加してください。