Skip to main content
Skip to content

Automatización de una actualización

Puede automatizar las operaciones de actualización mediante la API REST o una GitHub CLI extensión.

Puede actualizar su instancia GitHub Enterprise Server mediante la API Manage GitHub Enterprise Server o la extensión gh es para GitHub CLI. Estas herramientas automatizan el proceso de descarga del paquete de actualización, la ejecución de comprobaciones previas a la actualización y la aplicación de la nueva versión.

Prerequisites

Automatización de una actualización mediante la API REST

  1. Descargue el paquete de actualización.

    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. Confirme que la descarga se ha completado antes de continuar.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/download/status
    

    Espere hasta que status muestre COMPLETED.

  3. Aplique la fase previa de la actualización.

    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. Supervise la fase de actualización previa hasta que finalice.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      "https://HOSTNAME:8443/manage/v1/upgrade/status?is_verbose=true"
    

    Espere hasta que status muestre completed y is_running muestre false.

  5. Habilite el modo de mantenimiento.

    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. Aplique la fase de actualización del proceso de actualización.

    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. Confirme que se ha actualizado la versión de lanzamiento.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/version
    
  8. Deshabilita el modo de mantenimiento.

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

Automatización de una actualización mediante la GitHub CLI extensión

  1. Descargue el paquete de actualización. Para descargar una versión específica, especifique la --version marca; de lo contrario, se descarga la versión más reciente disponible.

    # Download a specific version
    gh es upgrade download --version VERSION
    
    # Or download the latest available version
    gh es upgrade download
    
  2. Confirme que la descarga se ha completado antes de continuar.

    gh es upgrade download status
    

    Espere hasta que status muestre COMPLETED.

  3. Aplique la fase previa de la actualización.

    gh es upgrade apply --version VERSION --phase pre-upgrade
    
  4. Supervise la fase de actualización previa hasta que finalice.

    gh es upgrade status --verbose
    

    Espere hasta que status muestre completed y is_running muestre false.

  5. Habilite el modo de mantenimiento.

    gh es maintenance set --enabled true
    
  6. Aplique la fase de actualización del proceso de actualización.

    gh es upgrade apply --version VERSION --phase upgrade
    
  7. Confirme que se ha actualizado la versión de lanzamiento.

    gh es release version
    
  8. Deshabilita el modo de mantenimiento.

    gh es maintenance set --enabled false
    

Actualización de una implementación de alta disponibilidad

Por ejemplo, con una réplica de alta disponibilidad (HA), las fases de descarga y actualización previa no son perjudiciales y pueden ejecutarse en todos los nodos a la vez. La especificación del UUID de destino solo es necesaria para la propia fase de actualización, que provoca el reinicio. Esto le permite controlar el orden en que se reinician los nodos: reinicie primero la réplica y, a continuación, el principal.

Para recuperar los UUID de nodo, ejecute gh es config get-metadata o consulte GET /manage/v1/config/nodes.

Actualización de una implementación de alta disponibilidad mediante GitHub CLI

  1. Descargue el paquete en todos los nodos.

    gh es upgrade download --version VERSION
    
  2. Espere a que se complete la descarga en todos los nodos.

    gh es upgrade download status
    
  3. Ejecute la fase de actualización previa en todos los nodos a la vez. Esta fase no provoca interrupciones.

    gh es upgrade apply --version VERSION --phase pre-upgrade
    
  4. Espere a que se complete la fase de actualización previa.

    gh es upgrade status --verbose
    
  5. Habilite el modo de mantenimiento.

    gh es maintenance set --enabled true
    
  6. Detenga la replicación en la réplica.

    ghe-repl-stop
    
  7. Actualice primero la principal, que desencadena el reinicio y, a continuación, supervise su progreso.

    gh es upgrade apply --version VERSION --phase upgrade --uuid PRIMARY-UUID
    gh es upgrade status --uuid PRIMARY-UUID --verbose
    
  8. Cuando el nodo principal finalice, actualice la réplica y supervise su progreso.

    gh es upgrade apply --version VERSION --phase upgrade --uuid REPLICA-UUID
    gh es upgrade status --uuid REPLICA-UUID --verbose
    
  9. Vuelva a iniciar la replicación en la réplica.

    ghe-repl-start
    
  10. Compruebe el estado de replicación y la versión y, a continuación, deshabilite el modo de mantenimiento.

    gh es replication status
    gh es release version
    gh es maintenance set --enabled false
    

Actualización de una implementación de alta disponibilidad mediante la API REST

  1. Descargue el paquete en todos los nodos.

    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. Espere a que se complete la descarga en todos los nodos.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/download/status
    
  3. Ejecute la fase de actualización previa en todos los nodos a la vez. Esta fase no provoca interrupciones.

    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. Espere a que se complete la fase de actualización previa.

    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. Habilite el modo de mantenimiento.

    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. Detenga la replicación en la réplica.

    ghe-repl-stop
    
  7. Actualice primero la principal, que desencadena el reinicio y, a continuación, supervise su progreso.

    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. Cuando finalice la instancia principal, actualice la réplica y supervise su progreso.

    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. Vuelva a iniciar la replicación en la réplica.

    ghe-repl-start
    
  10. Compruebe el estado de replicación y la versión y, a continuación, deshabilite el modo de mantenimiento.

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