自己コンパイルインスタンスのアップグレード
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
セルフコンパイルインストールされたインスタンスを、より新しいバージョンのGitLabにアップグレードします。
セルフコンパイルインストールされたGitLabインスタンスをアップグレードするには、次の手順を実行します:
- バックアップを作成します。
- GitLabを停止。
- Rubyを更新。
- Node.jsを更新。
- Goを更新。
- Gitを更新。
- PostgreSQLを更新。
- GitLabコードベースを更新。
- 設定ファイルを更新します。
- ライブラリをインストールして移行を実行。
- GitLab Shellを更新。
- GitLab Workhorseを更新。
- Gitalyを更新。
- GitLab Pagesを更新。
- アップグレード後の手順を実行します。
前提要件
アップグレードする前に:
- アップグレードする前に必要な情報を確認してください。
- Ruby、Node.js、Go、PostgreSQLのソフトウェア要件を確認してください。
バックアップを作成します
前提要件:
rsyncがインストールされていることを確認してください。
バックアップを作成するには:
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=productionGitLabを停止
GitLabを停止するには:
# For systems running systemd
sudo systemctl stop gitlab.target
# For systems running SysV init
sudo service gitlab stopRubyを更新
より新しいバージョンのRubyが必要な場合は、Rubyを更新する必要があります:
お使いのRubyのバージョンを確認するには、次を実行します:
ruby -vより新しいバージョンのRubyに更新する方法については、Rubyインストール手順を参照してください。
Node.jsを更新
より新しいバージョンのNode.jsが必要な場合は、Node.jsを更新する必要があります:
お使いのNode.jsのバージョンを確認するには、次を実行します:
node -vより新しいバージョンのNode.jsに更新する方法については、Node.jsダウンロード手順を参照してください。
GitLabは、JavaScriptの依存関係を管理するためにYarn >= v1.10.0も必要とします。詳細については、Yarnのウェブサイトを参照してください。
Goを更新
より新しいバージョンのGoが必要な場合は、Goを更新する必要があります:
お使いのGoのバージョンを確認するには、次を実行します:
go versionより新しいバージョンのGoに更新する方法については、Goインストール手順を参照してください。
Gitを更新
Gitalyが提供するGitバージョンを使用する必要があります。詳細については、Git用GitLabインストール手順を参照してください。
PostgreSQLを更新
より新しいバージョンのPostgreSQLが必要な場合は、PostgreSQLを更新する必要があります:
お使いのPostgreSQLのバージョンを確認するには、次を実行します:
pg_ctl --versionより新しいバージョンのPostgreSQLに更新する方法については、PostgreSQLのアップグレードドキュメントを参照してください。
必要なPostgreSQL拡張機能があることを確認してください。
GitLabコードベースを更新
GitLabコードベースのクローンを更新するには:
リポジトリメタデータをフェッチします:
cd /home/git/gitlab sudo -u git -H git fetch --all --prune sudo -u git -H git checkout -- Gemfile.lock db/structure.sql localeアップグレードするバージョンのブランチをチェックアウトします:
cd /home/git/gitlab sudo -u git -H git checkout <BRANCH-ee>cd /home/git/gitlab sudo -u git -H git checkout <BRANCH>
設定ファイルを更新します。
GitLabのアップグレードでは、次の設定の更新が必要になる場合があります:
gitlab.ymldatabase.yml- NGINX(またはApache)
- SMTP
- systemd
- SysV
次のセクションでは、設定の更新が必要かどうかを判断する方法について説明します。
gitlab.ymlの新しい設定
gitlab.ymlで使用できる新しい設定オプションがあるかもしれません。
利用可能な新しい設定を表示します:
cd /home/git/gitlab git diff origin/PREVIOUS_BRANCH:config/gitlab.yml.example origin/BRANCH:config/gitlab.yml.example現在の
gitlab.ymlに新しい設定を手動で適用します。
database.ymlの新しい設定
database.ymlで使用できる新しい設定オプションがあるかもしれません。
利用可能な新しい設定を表示します:
cd /home/git/gitlab git diff origin/PREVIOUS_BRANCH:config/database.yml.postgresql origin/BRANCH:config/database.yml.postgresql現在の
database.ymlに新しい設定を手動で適用します。
NGINXまたはApacheの新しい設定
最新の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/gitlabGitLabアプリケーションは、インストール時にStrict-Transport-Securityを設定しなくなりました。引き続き使用するには、NGINX設定で有効にする必要があります。
NGINXの代わりにApacheを使用している場合は、更新されたApacheテンプレートを参照してください。ApacheはUnixソケットの背後にあるアップストリームをサポートしていないため、/etc/default/gitlabを使用して、GitLab WorkhorseにTCPポートでリッスンさせ必要があります。
SMTP設定
SMTPを使用してメールを配信する場合は、次の行をconfig/initializers/smtp_settings.rbに追加する必要があります:
ActionMailer::Base.delivery_method = :smtp例については、smtp_settings.rb.sampleを参照してください。
systemdユニットを設定する
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スクリプトを設定する
gitlab.default.exampleで使用できる新しい設定オプションがあるかもしれません。
利用可能な新しい設定を表示します:
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現在の
/etc/default/gitlabに手動で適用します。
最新のinitスクリプトの変更で、まだ最新の状態になっていることを確認します:
cd /home/git/gitlab
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlabネイティブのsystemdユニットにまだ切り替えていないため、initとしてsystemdを実行しているシステムでinitスクリプトを使用している場合は、次を実行します:
sudo systemctl daemon-reloadライブラリをインストールして移行を実行する
ライブラリをインストールして移行を実行するには:
必要なライブラリをインストールします:
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 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
GitLab Shellを更新
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 buildGitLab Workhorseを更新
GitLab Workhorseをインストールしてビルドするには、次のコマンドを実行します:
cd /home/git/gitlab
sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=productionGitalyを更新
アプリケーションサーバーをアップグレードする前に、Gitalyサーバーを新しいバージョンにアップグレードします。これにより、アプリケーションサーバー上のgRPCクライアントが、古いGitalyバージョンがサポートしていないRPCsを送信するのを防ぎます。
Gitalyが独自のサーバーにある場合、またはGitalyクラスター(Praefect)を使用する場合は、ゼロダウンタイムアップグレードを参照してください。
ビルドプロセス中に、GitalyはGitバイナリをコンパイルして埋め込みますが、これには追加の依存関係が必要です。
# Install dependencies
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev libpcre2-dev build-essential
# 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=productionGitLab Pagesを更新
GitLab Pagesをインストールしてビルドするには:
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アップグレード後の手順
アップグレード後:
GitLabとNGINXを起動
GitLabとNGINXを起動するには:
# 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 restartGitLabステータスをチェック
GitLabのステータスをチェックするには:
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 16.6にアップグレードし、16.5にロールバックする場合は、16.4から16.5へのアップグレードのガイドに従ってください。
ロールバックする場合:
- データベース移行ガイドに従うべきではありません。これは、バックアップがすでに以前のバージョンに移行されているためです。
- データベース移行を実行した場合は、ダウングレード後にバックアップを復元する必要があります。コードのバージョンは、使用されているスキーマのバージョンと互換性がある必要があります。古いスキーマはバックアップにあります。
バックアップから復元する
バックアップから復元するには:
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:backup:restore RAILS_ENV=production複数のバックアップ*.tarファイルがある場合は、前のコードブロックにBACKUP=timestamp_of_backupを追加します。