Skip to main content
Skip to content

Автоматизация обновления

Вы можете автоматизировать операции обновления с помощью REST API или GitHub CLI расширения.

Вы можете обновить 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

  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 будут показаны completed и is_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 будут показаны completed и is_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}'