您可以使用 Manage gh es API 或用于 GitHub Enterprise Server 的 GitHub Enterprise Server 扩展来升级您的 GitHub CLI 实例。 这些工具自动执行下载升级包、运行升级前检查和应用新版本的过程。
先决条件
- 使用 GitHub Enterprise Server Backup Utilities 备份您的数据。
- 为最终用户计划维护时段。
- 确保可以对管理 GitHub Enterprise Server API 进行身份验证。 有关详细信息,请参阅“用于GitHub企业管理的 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}'