我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们
文章版本: Enterprise Server 2.18

升级 GitHub Enterprise Server

升级 GitHub Enterprise Server,以获取最新功能和安全更新。

本文内容

准备升级

  1. 确定升级策略并选择要升级到的版本。 更多信息请参阅“升级要求”。

  2. 使用 GitHub Enterprise Server 备份实用程序 创建全新的主实例备份。 更多信息请参阅 GitHub Enterprise Server 备份实用程序 README.md 文件

  3. 如果您要使用升级包进行升级,请为 GitHub Enterprise Server 最终用户排定维护窗口。 如果您要使用热补丁,则不需要使用维护模式。

    :维护窗口取决于所执行升级的类型。 使用热补丁进行升级通常不需要维护窗口。 有时需要重启,不过您可以在之后的某个时间重启。 按照 MAJOR.FEATURE.PATCH 的版本控制方案,使用升级包的补丁版本通常需要不到 5 分钟的停机时间。 包含数据迁移的功能版本需要的时间更长,具体视存储性能以及迁移的数据量而定。 更多信息请参阅“启用和排定维护模式”。

生成快照

快照是虚拟机 (VM) 在某一时间点的检查点。 强烈建议在升级虚拟机之前生成快照,这样一来,如果升级失败,您可以将 VM 还原到快照状态。 如果您要升级到新的功能版本,则必须生成 VM 快照。 如果您要升级到补丁版本,可以连接现有数据磁盘。

有两种类型的快照:

平台 快照方法 快照文档 URL
Amazon AWS 磁盘 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html
Azure VM https://azure.microsoft.com/en-us/documentation/articles/backup-azure-vms/
Hyper-V VM https://technet.microsoft.com/en-us/library/dd851843.aspx
Google Compute Engine 磁盘 https://cloud.google.com/compute/docs/disks/create-snapshots
VMware VM https://pubs.vmware.com/vsphere-50/index.jsp#com.vmware.vsphere.vm_admin.doc_50/GUID-9720B104-9875-4C2C-A878-F1C351A4F3D8.html
XenServer VM https://support.citrix.com/article/CTX122978

使用热补丁升级

You can upgrade GitHub Enterprise Server to the latest patch release using a hotpatch, which does not require a maintenance window and usually does not require a reboot. You can use hotpatching to upgrade to a newer patch release, but not a feature release. For example, you can upgrade from 2.10.1 to 2.10.5 because they are in the same feature series, but not from 2.10.9 to 2.11.0 because they are in a different feature series. Using the 管理控制台, you can install a hotpatch immediately or schedule it for later installation. 您可以使用管理 shell 的 ghe-upgrade 实用程序安装热补丁。 更多信息请参阅“升级要求”。

Note: Installing a hotpatch using the 管理控制台 is not available in clustered environments. To install a hotpatch in a clustered environment, see "Upgrading a cluster."

使用热补丁升级单个设备

Installing a hotpatch using the 管理控制台
  1. 启用自动更新。 For more information, see "Enabling automatic updates."

  2. In the upper-right corner of any page, click .

    用于访问站点管理员设置的火箭图标

  3. 在左侧边栏中,单击 管理控制台

    在左侧边栏中的 管理控制台 选项卡

  4. At the top of the 管理控制台, click Updates.

    Updates menu item

  5. 在新的热补丁下载完毕后,请使用 Install package 下拉菜单:

    • 要立即安装,请选择 Now
    • 要稍后安装,请选择以后的日期。
      热补丁安装日期下拉菜单
  6. 单击 Install

    热补丁安装按钮

使用管理 shell 安装热补丁

Note: If you've enabled automatic update checks, you don't need to download the upgrade package and can use the file that was automatically downloaded. For more information, see "Enabling automatic update checks."

  1. SSH into 您的 GitHub Enterprise Server 实例.

    $ ssh -p 122 admin@HOSTNAME
  2. Browse to the GitHub Enterprise Server Releases page. Next to the release you are upgrading to, click Download, then click the Upgrading tab. 复制升级热补丁包(.hpkg 文件)的 URL。

  3. Download the upgrade package to 您的 GitHub Enterprise Server 实例 using curl:

    admin@HOSTNAME:~$ curl -L -O UPGRADE-PKG-URL
  4. 使用包文件名运行 ghe-upgrade 命令:

    admin@HOSTNAME:~$ ghe-upgrade GITHUB-UPGRADE.hpkg*** verifying upgrade package signature...
  5. 如果更新内核、MySQL、Elasticsearch 或其他程序时需要重启,热补丁升级脚本会通知您。

使用热补丁升级包含副本实例的设备

Note: If you are installing a hotpatch, you do not need to enter maintenance mode or stop replication.

配置为高可用性和 Geo-replication 的设备除了会使用主实例之外,还会使用副本实例。 要升级此类设备,您需要逐个升级主实例和所有副本实例。

升级主实例
  1. 请按照“使用管理 shell 安装热补丁”中的说明升级主实例。
升级副本实例

:如果您要将多个副本实例作为 Geo-replication 的一部分运行,请逐一为每个副本实例重复此步骤。

  1. 请按照“使用管理 shell 安装热补丁”中的说明升级副本实例。如果您为 Geo-replication 使用多个副本,则必须重复此步骤,逐一升级每个副本。

  2. Connect to the replica instance over SSH as the "admin" user on port 122:

    $ ssh -p 122 admin@replica-host
  3. Verify the upgrade by running:

    $ ghe-version

使用升级包升级

虽然您可以使用热补丁升级到功能系列中的最新补丁版本,但必须使用升级包升级到更新的功能版本。 例如,要从 2.11.10 升级到 2.12.4,您必须使用升级包,因为两者在不同的功能系列中。 更多信息请参阅“升级要求”。

使用升级包升级单个设备

Note: If you've enabled automatic update checks, you don't need to download the upgrade package and can use the file that was automatically downloaded. For more information, see "Enabling automatic update checks."

  1. SSH into 您的 GitHub Enterprise Server 实例.

    $ ssh -p 122 admin@HOSTNAME
  2. Browse to the GitHub Enterprise Server Releases page. Next to the release you are upgrading to, click Download, then click the Upgrading tab. 选择适当的平台并复制升级包(.pkg 文件)的 URL。

  3. Download the upgrade package to 您的 GitHub Enterprise Server 实例 using curl:

    admin@HOSTNAME:~$ curl -L -O UPGRADE-PKG-URL
  4. 启用维护模式并等待 GitHub Enterprise Server 实例上的所有活动进程完成。 更多信息请参阅“启用和排定维护模式”。

    :升级采用高可用性配置的主设备时,如果您按照“升级主实例”中的说明操作,设备应当已处于维护模式。

  5. 使用包文件名运行 ghe-upgrade 命令:

    admin@HOSTNAME:~$ ghe-upgrade GITHUB-UPGRADE.pkg*** verifying upgrade package signature...
  6. 确认您要继续升级,并在包签名得到验证后重新启动。 新的根文件系统会写入辅助分区,实例会在维护模式下自动重启:

    *** applying update...
    This package will upgrade your installation to version version-numberCurrent root partition: /dev/xvda1 [version-number]
    Target root partition:  /dev/xvda2
    Proceed with installation? [y/N]
  7. 对于单个设备升级,请禁用维护模式,以便用户能够使用 您的 GitHub Enterprise Server 实例。

    :升级采用高可用性配置的主设备时,您应当一直处于维护模式,直至已升级所有副本,复制是最新版本。 更多信息请参阅“升级副本实例”。

使用升级包升级包含副本实例的设备

配置为高可用性和 Geo-replication 的设备除了会使用主实例之外,还会使用副本实例。 要升级此类设备,您需要逐个升级主实例和所有副本实例。

升级主实例

警告:复制停止时,如果主实例发生故障,副本升级和复制再次开始之前执行的任何操作都将丢失。

  1. 在主实例上,启用维护模式并等待所有活动进程完成。 For more information, see "Enabling maintenance mode."

  2. Connect to the replica instance over SSH as the "admin" user on port 122:

    $ ssh -p 122 admin@replica-host
  3. 在副本实例或者所有副本实例(如果您将多个副本实例作为 Geo-replication 的一部分运行)上,运行 ghe-repl-stop 以停止复制。

  4. 按照“使用升级包升级单个设备”中的说明升级主实例。

升级副本实例

:如果您要将多个副本实例作为 Geo-replication 的一部分运行,请逐一为每个副本实例重复此步骤。

  1. 按照“使用升级包升级单个设备”中的说明升级副本实例。如果您为 Geo-replication 使用多个副本,则必须重复此步骤,逐一升级每个副本。

  2. Connect to the replica instance over SSH as the "admin" user on port 122:

    $ ssh -p 122 admin@replica-host
  3. Verify the upgrade by running:

    $ ghe-version
  4. On the replica instance, to start replication, run ghe-repl-start.

  5. On the replica instance, to make sure replication services are running correctly, run ghe-repl-status. This command will return OK for all services when a successful replication is in progress and the replica has upgraded. 如果命令返回 Replication is not running,说明复制可能仍在启动。 等待 1 分钟左右,然后再次运行 ghe-repl-status

    :在重新同步过程中,ghe-repl-status 可能返回预期消息,提示复制落后。 例如:CRITICAL: git replication is behind the primary by more than 1007 repositories and/or gists

    如果 ghe-repl-status 未返回 OK,请执行以下步骤手动启动复制。

    1. 在副本实例上,再次运行 ghe-repl-setup <primary-instance-ip>

    2. On the replica instance, to start replication, run ghe-repl-start.

    3. On the replica instance, to make sure replication services are running correctly, run ghe-repl-status. This command will return OK for all services when a successful replication is in progress and the replica has upgraded.

  6. 最后一个副本升级完毕且重新同步完成后,请禁用维护模式,以便用户能够使用 您的 GitHub Enterprise Server 实例。

从失败的升级中恢复

如果升级失败或中断,您应将实例还原为其之前的状态。 完成此操作的过程取决于升级类型。

回滚补丁版本

To roll back a patch release, use the ghe-upgrade command with the --allow-patch-rollback switch. When rolling back an upgrade, you must use an upgrade package file with the .pkg extension. Hotpatch package files with the .hpkg extension are not supported.

ghe-upgrade --allow-patch-rollback EARLIER-RELEASE-UPGRADE-PACKAGE.pkg

A reboot is required after running the command. Rolling back does not affect the data partition, as migrations are not run on patch releases.

更多信息请参阅“命令行实用程序”。

回滚功能版本

要从功能版本回滚,请从 VM 快照恢复,以确保根分区和数据分区处于一致的状态。 更多信息请参阅“生成快照”。

问问别人

找不到要找的内容?

联系我们