Вы можете обновить GitHub Enterprise Server экземпляр с помощью API управления GitHub Enterprise Server или gh es расширения.GitHub CLI Эти средства автоматизируют процесс загрузки пакета обновления, выполнения проверок перед обновлением и применения новой версии.
Необходимые условия
- Сделайте резервную копию данных с помощью GitHub Enterprise Server Backup Utilities.
- Планирование периода обслуживания для конечных пользователей.
- Убедитесь, что вы можете пройти проверку подлинности в API управления GitHub Enterprise Server . Дополнительные сведения см. в разделе REST API endpoints для GitHub Enterprise Administration.
Автоматизация обновления с помощью 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}'