正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。
ドキュメントに関する現在のご利用体験についてお聞かせください。アンケートにご協力ください。

自己コンパイルインスタンスのアップグレード

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

セルフコンパイルインストールされたインスタンスを、より新しいバージョンのGitLabにアップグレードします。

セルフコンパイルインストールされたGitLabインスタンスをアップグレードするには、次の手順を実行します:

  1. バックアップを作成します。
  2. GitLabを停止。
  3. Rubyを更新。
  4. Node.jsを更新。
  5. Goを更新。
  6. Gitを更新。
  7. PostgreSQLを更新。
  8. GitLabコードベースを更新。
  9. 設定ファイルを更新します。
  10. ライブラリをインストールして移行を実行。
  11. GitLab Shellを更新。
  12. GitLab Workhorseを更新。
  13. Gitalyを更新。
  14. GitLab Pagesを更新。
  15. アップグレード後の手順を実行します。

前提要件

アップグレードする前に:

バックアップを作成します

前提要件:

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

バックアップを作成するには:

shell
cd /home/git/gitlab

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

GitLabを停止

GitLabを停止するには:

shell
# For systems running systemd
sudo systemctl stop gitlab.target

# For systems running SysV init
sudo service gitlab stop

Rubyを更新

より新しいバージョンのRubyが必要な場合は、Rubyを更新する必要があります:

  1. お使いのRubyのバージョンを確認するには、次を実行します:

    shell
    ruby -v
  2. より新しいバージョンのRubyに更新する方法については、Rubyインストール手順を参照してください。

Node.jsを更新

より新しいバージョンのNode.jsが必要な場合は、Node.jsを更新する必要があります:

  1. お使いのNode.jsのバージョンを確認するには、次を実行します:

    shell
    node -v
  2. より新しいバージョンのNode.jsに更新する方法については、Node.jsダウンロード手順を参照してください。

GitLabは、JavaScriptの依存関係を管理するためにYarn >= v1.10.0も必要とします。詳細については、Yarnのウェブサイトを参照してください。

Goを更新

より新しいバージョンのGoが必要な場合は、Goを更新する必要があります:

  1. お使いのGoのバージョンを確認するには、次を実行します:

    shell
    go version
  2. より新しいバージョンのGoに更新する方法については、Goインストール手順を参照してください。

Gitを更新

Gitalyが提供するGitバージョンを使用する必要があります。詳細については、Git用GitLabインストール手順を参照してください。

PostgreSQLを更新

より新しいバージョンのPostgreSQLが必要な場合は、PostgreSQLを更新する必要があります:

  1. お使いのPostgreSQLのバージョンを確認するには、次を実行します:

    shell
    pg_ctl --version
  2. より新しいバージョンのPostgreSQLに更新する方法については、PostgreSQLのアップグレードドキュメントを参照してください。

  3. 必要なPostgreSQL拡張機能があることを確認してください。

GitLabコードベースを更新

GitLabコードベースのクローンを更新するには:

  1. リポジトリメタデータをフェッチします:

    shell
    cd /home/git/gitlab
    
    sudo -u git -H git fetch --all --prune
    sudo -u git -H git checkout -- Gemfile.lock db/structure.sql locale
  2. アップグレードするバージョンのブランチをチェックアウトします:

    shell
    cd /home/git/gitlab
    
    sudo -u git -H git checkout <BRANCH-ee>
    shell
    cd /home/git/gitlab
    
    sudo -u git -H git checkout <BRANCH>

設定ファイルを更新します。

GitLabのアップグレードでは、次の設定の更新が必要になる場合があります:

  • gitlab.yml
  • database.yml
  • NGINX(またはApache)
  • SMTP
  • systemd
  • SysV

次のセクションでは、設定の更新が必要かどうかを判断する方法について説明します。

gitlab.ymlの新しい設定

gitlab.ymlで使用できる新しい設定オプションがあるかもしれません。

  1. 利用可能な新しい設定を表示します:

    shell
    cd /home/git/gitlab
    git diff origin/PREVIOUS_BRANCH:config/gitlab.yml.example origin/BRANCH:config/gitlab.yml.example
  2. 現在のgitlab.ymlに新しい設定を手動で適用します。

database.ymlの新しい設定

database.ymlで使用できる新しい設定オプションがあるかもしれません。

  1. 利用可能な新しい設定を表示します:

    shell
    cd /home/git/gitlab
    git diff origin/PREVIOUS_BRANCH:config/database.yml.postgresql origin/BRANCH:config/database.yml.postgresql
  2. 現在のdatabase.ymlに新しい設定を手動で適用します。

NGINXまたはApacheの新しい設定

最新のNGINX設定の変更で、まだ最新の状態になっていることを確認します:

shell
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

GitLabアプリケーションは、インストール時にStrict-Transport-Securityを設定しなくなりました。引き続き使用するには、NGINX設定で有効にする必要があります。

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

SMTP設定

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

ruby
ActionMailer::Base.delivery_method = :smtp

例については、smtp_settings.rb.sampleを参照してください。

systemdユニットを設定する

  1. systemdユニットが更新されたかどうかを確認します:

    shell
    cd /home/git/gitlab
    
    git diff origin/PREVIOUS_BRANCH:lib/support/systemd origin/BRANCH:lib/support/systemd
  2. それらをコピーします:

    shell
    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で使用できる新しい設定オプションがあるかもしれません。

  1. 利用可能な新しい設定を表示します:

    shell
    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
  2. 現在の/etc/default/gitlabに手動で適用します。

最新のinitスクリプトの変更で、まだ最新の状態になっていることを確認します:

shell
cd /home/git/gitlab

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

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

shell
sudo systemctl daemon-reload

ライブラリをインストールして移行を実行する

ライブラリをインストールして移行を実行するには:

  1. 必要なライブラリをインストールします:

    shell
    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
  2. 移行を実行します:

    shell
    # 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を更新するには、次のコマンドを実行します:

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

GitLab Workhorseを更新

GitLab Workhorseをインストールしてビルドするには、次のコマンドを実行します:

shell
cd /home/git/gitlab

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

Gitalyを更新

アプリケーションサーバーをアップグレードする前に、Gitalyサーバーを新しいバージョンにアップグレードします。これにより、アプリケーションサーバー上のgRPCクライアントが、古いGitalyバージョンがサポートしていないRPCsを送信するのを防ぎます。

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

ビルドプロセス中に、GitalyはGitバイナリをコンパイルして埋め込みますが、これには追加の依存関係が必要です。

shell
# 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=production

GitLab Pagesを更新

GitLab Pagesをインストールしてビルドするには:

shell
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

アップグレード後の手順

アップグレード後:

  1. GitLabとNGINXを起動。
  2. GitLabステータスをチェック。

GitLabとNGINXを起動

GitLabとNGINXを起動するには:

shell
# 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

GitLabステータスをチェック

GitLabのステータスをチェックするには:

  1. GitLabとその環境が正しく設定されているかどうかを検証します:

    shell
    cd /home/git/gitlab
    sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
  2. 何か見落としがないか確認するために、より徹底的なチェックを実行するには、次のコマンドを実行します:

    shell
    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へのアップグレードのガイドに従ってください。

ロールバックする場合:

  • データベース移行ガイドに従うべきではありません。これは、バックアップがすでに以前のバージョンに移行されているためです。
  • データベース移行を実行した場合は、ダウングレード後にバックアップを復元する必要があります。コードのバージョンは、使用されているスキーマのバージョンと互換性がある必要があります。古いスキーマはバックアップにあります。

バックアップから復元する

バックアップから復元するには:

shell
cd /home/git/gitlab

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

複数のバックアップ*.tarファイルがある場合は、前のコードブロックにBACKUP=timestamp_of_backupを追加します。