Skip to main content
Skip to content

自动升级

可以使用 REST API 或 GitHub CLI 扩展自动执行升级操作。

您可以使用 Manage gh es API 或用于 GitHub Enterprise Server 的 GitHub Enterprise Server 扩展来升级您的 GitHub CLI 实例。 这些工具自动执行下载升级包、运行升级前检查和应用新版本的过程。

先决条件

使用 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
    

    等到 status 显示 COMPLETED

  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"
    

    等到 status 显示 completedis_running 显示 false

  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. 执行该升级的升级阶段。

    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"}'
    
  7. 确认发布版本已更新。

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/version
    
  8. 禁用维护模式。

    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
    

    等待 status 显示 COMPLETED

  3. 执行该升级的升级前阶段。

    gh es upgrade apply --version VERSION --phase pre-upgrade
    
  4. 监视升级前阶段,直到完成。

    gh es upgrade status --verbose
    

    等到 status 显示 completedis_running 显示 false

  5. 启用维护模式。

    gh es maintenance set --enabled true
    
  6. 执行升级过程中的升级阶段。

    gh es upgrade apply --version VERSION --phase upgrade
    
  7. 确认发布版本已更新。

    gh es release version
    
  8. 禁用维护模式。

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