Skip to main content
Skip to content

アップグレードの自動化

REST API または GitHub CLI 拡張機能を使用して、アップグレード操作を自動化できます。

GitHub Enterprise Server インスタンスは、manage GitHub Enterprise Server API または GitHub CLI の gh es 拡張機能を使用してアップグレードできます。 これらのツールは、アップグレード パッケージのダウンロード、アップグレード前のチェックの実行、新しいバージョンの適用のプロセスを自動化します。

Prerequisites

REST API を使用したアップグレードの自動化

  1. アップグレード パッケージをダウンロードします。

    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"}'
    
  2. 続行する前に、ダウンロードが完了したことを確認します。

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/download/status
    

statusCOMPLETEDが表示されるまで待ちます。

  1. アップグレードの事前アップグレード段階を適用します。

    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"}'
    
  2. アップグレード前フェーズが完了するまで監視します。

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      "https://HOSTNAME:8443/manage/v1/upgrade/status?is_verbose=true"
    

statuscompletedが表示され、is_runningfalseが表示されるまで待ちます。

  1. メンテナンス モードの有効化。

    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}'
    
  2. アップグレード フェーズを適用します。

    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"}'
    
  3. リリース バージョンが更新されたことを確認します。

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/version
    
  4. メンテナンス モードを無効にします。

    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拡張機能を使用したアップグレードの自動化

  1. アップグレード パッケージをダウンロードします。 特定のバージョンをダウンロードするには、 --version フラグを指定します。それ以外の場合は、使用可能な最新バージョンがダウンロードされます。

    # Download a specific version
    gh es upgrade download --version VERSION
    
    # Or download the latest available version
    gh es upgrade download
    
  2. 続行する前に、ダウンロードが完了したことを確認します。

    gh es upgrade download status
    

statusCOMPLETEDが表示されるまで待ちます。

  1. アップグレードの事前フェーズを適用します。

    gh es upgrade apply --version VERSION --phase pre-upgrade
    
  2. アップグレード前フェーズが完了するまで監視します。

    gh es upgrade status --verbose
    

statuscompletedが表示され、is_runningfalseが表示されるまで待ちます。

  1. メンテナンス モードの有効化。

    gh es maintenance set --enabled true
    
  2. そのアップグレードのアップグレード フェーズを適用します。

    gh es upgrade apply --version VERSION --phase upgrade
    
  3. リリース バージョンが更新されたことを確認します。

    gh es release version
    
  4. メンテナンス モードを無効にします。

    gh es maintenance set --enabled false
    

高可用性デプロイのアップグレード

高可用性 (HA) レプリカがある場合、ダウンロードフェーズとアップグレード前フェーズは中断を伴わず、すべてのノードで一度に実行できます。 UUID のターゲット設定は、アップグレード フェーズ自体にのみ必要であり、再起動がトリガーされます。 これにより、ノードの再起動順序を制御できます。最初にレプリカをアップグレードし、次にプライマリをアップグレードします。

ノード UUID を取得するには、 gh es config get-metadata またはクエリ GET /manage/v1/config/nodesを実行します。

GitHub CLI を使用した高可用性デプロイのアップグレード

  1. パッケージをすべてのノードにダウンロードします。

    gh es upgrade download --version VERSION
    
  2. すべてのノードでダウンロードが完了するまで待ちます。

    gh es upgrade download status
    
  3. すべてのノードで一度にアップグレード前フェーズを実行します。 このフェーズは中断を伴わない。

    gh es upgrade apply --version VERSION --phase pre-upgrade
    
  4. アップグレード前のフェーズが完了するまで待ちます。

    gh es upgrade status --verbose
    
  5. メンテナンス モードの有効化。

    gh es maintenance set --enabled true
    
  6. レプリカでのレプリケーションを停止します。

    ghe-repl-stop
    
  7. 最初にプライマリをアップグレードして再起動をトリガーし、その進行状況を監視します。

    gh es upgrade apply --version VERSION --phase upgrade --uuid PRIMARY-UUID
    gh es upgrade status --uuid PRIMARY-UUID --verbose
    
  8. プライマリが完了したら、レプリカをアップグレードし、その進行状況を監視します。

    gh es upgrade apply --version VERSION --phase upgrade --uuid REPLICA-UUID
    gh es upgrade status --uuid REPLICA-UUID --verbose
    
  9. レプリカでもう一度レプリケーションを開始します。

    ghe-repl-start
    
  10. レプリケーションの正常性とバージョンを確認し、メンテナンス モードを無効にします。

    gh es replication status
    gh es release version
    gh es maintenance set --enabled false
    

REST API を使用した高可用性デプロイのアップグレード

  1. パッケージをすべてのノードにダウンロードします。

    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"}'
    
  2. すべてのノードでダウンロードが完了するまで待ちます。

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/download/status
    
  3. すべてのノードで一度にアップグレード前フェーズを実行します。 このフェーズは中断を伴わない。

    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"}'
    
  4. アップグレード前のフェーズが完了するまで待ちます。

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      "https://HOSTNAME:8443/manage/v1/upgrade/status?is_verbose=true"
    
  5. メンテナンス モードの有効化。

    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}'
    
  6. レプリカでのレプリケーションを停止します。

    ghe-repl-stop
    
  7. 最初にプライマリをアップグレードして再起動をトリガーし、その進行状況を監視します。

    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"
    
  8. プライマリが完了したら、レプリカをアップグレードし、その進行状況を監視します。

    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"
    
  9. レプリカでもう一度レプリケーションを開始します。

    ghe-repl-start
    
  10. レプリケーションの正常性とバージョンを確認し、メンテナンス モードを無効にします。

    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}'