GitHub Enterprise Server インスタンスは、manage GitHub Enterprise Server API または GitHub CLI の gh es 拡張機能を使用してアップグレードできます。 これらのツールは、アップグレード パッケージのダウンロード、アップグレード前のチェックの実行、新しいバージョンの適用のプロセスを自動化します。
Prerequisites
- GitHub Enterprise Server Backup Utilities を使用してデータをバックアップします。
- エンド ユーザーのメンテナンス期間をスケジュールします。
- Manage GitHub Enterprise Server API に対して認証できることを確認します。 詳細については、「GitHub Enterprise 管理用の REST API エンドポイント」を参照してください。
REST API を使用したアップグレードの自動化
-
アップグレード パッケージをダウンロードします。
curl -L \ -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/download \ -d '{"version":"VERSION"}' -
続行する前に、ダウンロードが完了したことを確認します。
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/download/status
statusにCOMPLETEDが表示されるまで待ちます。
-
アップグレードの事前アップグレード段階を適用します。
curl -L \ -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/apply \ -d '{"version":"VERSION", "phase":"pre-upgrade"}' -
アップグレード前フェーズが完了するまで監視します。
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ "https://HOSTNAME:8443/manage/v1/upgrade/status?is_verbose=true"
statusにcompletedが表示され、is_runningにfalseが表示されるまで待ちます。
-
メンテナンス モードの有効化。
curl -L \ -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/maintenance \ -d '{"enabled":true}' -
アップグレード フェーズを適用します。
curl -L \ -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/apply \ -d '{"version":"VERSION", "phase":"upgrade"}' -
リリース バージョンが更新されたことを確認します。
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/version -
メンテナンス モードを無効にします。
curl -L \ -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/maintenance \ -d '{"enabled":false}'
GitHub CLI拡張機能を使用したアップグレードの自動化
-
アップグレード パッケージをダウンロードします。 特定のバージョンをダウンロードするには、
--versionフラグを指定します。それ以外の場合は、使用可能な最新バージョンがダウンロードされます。# Download a specific version gh es upgrade download --version VERSION # Or download the latest available version gh es upgrade download -
続行する前に、ダウンロードが完了したことを確認します。
gh es upgrade download status
statusにCOMPLETEDが表示されるまで待ちます。
-
アップグレードの事前フェーズを適用します。
gh es upgrade apply --version VERSION --phase pre-upgrade -
アップグレード前フェーズが完了するまで監視します。
gh es upgrade status --verbose
statusにcompletedが表示され、is_runningにfalseが表示されるまで待ちます。
-
メンテナンス モードの有効化。
gh es maintenance set --enabled true -
そのアップグレードのアップグレード フェーズを適用します。
gh es upgrade apply --version VERSION --phase upgrade -
リリース バージョンが更新されたことを確認します。
gh es release version -
メンテナンス モードを無効にします。
gh es maintenance set --enabled false
高可用性デプロイのアップグレード
高可用性 (HA) レプリカがある場合、ダウンロードフェーズとアップグレード前フェーズは中断を伴わず、すべてのノードで一度に実行できます。 UUID のターゲット設定は、アップグレード フェーズ自体にのみ必要であり、再起動がトリガーされます。 これにより、ノードの再起動順序を制御できます。最初にレプリカをアップグレードし、次にプライマリをアップグレードします。
ノード UUID を取得するには、 gh es config get-metadata またはクエリ GET /manage/v1/config/nodesを実行します。
GitHub CLI を使用した高可用性デプロイのアップグレード
-
パッケージをすべてのノードにダウンロードします。
gh es upgrade download --version VERSION -
すべてのノードでダウンロードが完了するまで待ちます。
gh es upgrade download status -
すべてのノードで一度にアップグレード前フェーズを実行します。 このフェーズは中断を伴わない。
gh es upgrade apply --version VERSION --phase pre-upgrade -
アップグレード前のフェーズが完了するまで待ちます。
gh es upgrade status --verbose -
メンテナンス モードの有効化。
gh es maintenance set --enabled true -
レプリカでのレプリケーションを停止します。
ghe-repl-stop -
最初にプライマリをアップグレードして再起動をトリガーし、その進行状況を監視します。
gh es upgrade apply --version VERSION --phase upgrade --uuid PRIMARY-UUID gh es upgrade status --uuid PRIMARY-UUID --verbose -
プライマリが完了したら、レプリカをアップグレードし、その進行状況を監視します。
gh es upgrade apply --version VERSION --phase upgrade --uuid REPLICA-UUID gh es upgrade status --uuid REPLICA-UUID --verbose -
レプリカでもう一度レプリケーションを開始します。
ghe-repl-start -
レプリケーションの正常性とバージョンを確認し、メンテナンス モードを無効にします。
gh es replication status gh es release version gh es maintenance set --enabled false
REST API を使用した高可用性デプロイのアップグレード
-
パッケージをすべてのノードにダウンロードします。
curl -L -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/download \ -d '{"version":"VERSION"}' -
すべてのノードでダウンロードが完了するまで待ちます。
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/download/status -
すべてのノードで一度にアップグレード前フェーズを実行します。 このフェーズは中断を伴わない。
curl -L -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/apply \ -d '{"version":"VERSION","phase":"pre-upgrade"}' -
アップグレード前のフェーズが完了するまで待ちます。
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ "https://HOSTNAME:8443/manage/v1/upgrade/status?is_verbose=true" -
メンテナンス モードの有効化。
curl -L -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/maintenance \ -d '{"enabled":true}' -
レプリカでのレプリケーションを停止します。
ghe-repl-stop -
最初にプライマリをアップグレードして再起動をトリガーし、その進行状況を監視します。
curl -L -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/apply \ -d '{"version":"VERSION","phase":"upgrade","uuid":"PRIMARY-UUID"}' curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ "https://HOSTNAME:8443/manage/v1/upgrade/status?uuid=PRIMARY-UUID&is_verbose=true" -
プライマリが完了したら、レプリカをアップグレードし、その進行状況を監視します。
curl -L -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/apply \ -d '{"version":"VERSION","phase":"upgrade","uuid":"REPLICA-UUID"}' curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ "https://HOSTNAME:8443/manage/v1/upgrade/status?uuid=REPLICA-UUID&is_verbose=true" -
レプリカでもう一度レプリケーションを開始します。
ghe-repl-start -
レプリケーションの正常性とバージョンを確認し、メンテナンス モードを無効にします。
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/replication/status curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/version curl -L -X POST \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/maintenance \ -d '{"enabled":false}'