- 新しいメジャーバージョンへのアップグレード
- 全バージョンのガイドライン
- バージョン固有の変更
- トラブルシューティング
セルフコンパイル・インストールのアップグレード
インストールしたいGitLabのブランチ(バージョン)からこのアップグレードガイドを見てください(例えば、16.0
)。GitLabドキュメントページの右上にあるドロップダウンリストで、必要なバージョンのドキュメントを選択できます。
以下の各例では、BRANCH
をアップグレードするバージョンのブランチに置き換えてください(例えば、16.0
は16-0-stable
)。PREVIOUS_BRANCH
をアップグレード元のバージョンのブランチに置き換えてください(例えば、15-11-stable
を15.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.yml
でgit -> bin_path
を/usr/local/bin/git
に設定することを忘れないでください。
7.PostgreSQLの更新
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.postgresql
にci:
セクションが追加されました。
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
を追加してください。