Skip to main content
Skip to content

Automatisation d’une mise à niveau

Vous pouvez automatiser les opérations de mise à niveau à l’aide de l’API REST ou d’une GitHub CLI extension.

Vous pouvez mettre à niveau votre GitHub Enterprise Server instance à l’aide de l’API Gérer GitHub Enterprise Server ou de l’extension gh es pour GitHub CLI. Ces outils automatisent le processus de téléchargement du package de mise à niveau, l’exécution de vérifications préalables à la mise à niveau et l’application de la nouvelle version.

Prerequisites

Automatisation d’une mise à niveau à l’aide de l’API REST

  1. Téléchargez le package de mise à niveau.

    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. Vérifiez que le téléchargement est terminé avant de continuer.

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

    Patientez jusqu’à ce que status affiche COMPLETED.

  3. Appliquez la phase préalable à la mise à niveau.

    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. Surveillez la phase de pré-mise à niveau jusqu’à ce qu’elle se termine.

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

    Patientez jusqu’à ce que status affiche completed et que is_running affiche false.

  5. Activer le mode maintenance.

    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. Appliquez la phase de mise à niveau.

    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. Vérifiez que la version de publication a bien été mise à jour.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/version
    
  8. Désactivez le mode maintenance.

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

Automatisation d’une mise à niveau à l’aide de l’extension GitHub CLI

  1. Téléchargez le package de mise à niveau. Pour télécharger une version spécifique, spécifiez l’indicateur --version ; sinon, la dernière version disponible est téléchargée.

    # Download a specific version
    gh es upgrade download --version VERSION
    
    # Or download the latest available version
    gh es upgrade download
    
  2. Vérifiez que le téléchargement est terminé avant de continuer.

    gh es upgrade download status
    

    Patientez jusqu’à ce que status affiche COMPLETED.

  3. Effectuez la phase préalable à la mise à niveau.

    gh es upgrade apply --version VERSION --phase pre-upgrade
    
  4. Surveillez la phase de pré-mise à niveau jusqu’à ce qu’elle se termine.

    gh es upgrade status --verbose
    

    Patientez jusqu’à ce que status affiche completed et que is_running affiche false.

  5. Activer le mode maintenance.

    gh es maintenance set --enabled true
    
  6. Appliquez la phase de mise à niveau.

    gh es upgrade apply --version VERSION --phase upgrade
    
  7. Vérifiez que la version de publication a été mise à jour.

    gh es release version
    
  8. Désactivez le mode maintenance.

    gh es maintenance set --enabled false
    

Mise à niveau d’un déploiement à haute disponibilité

Pour les instances avec un réplica haute disponibilité(HA), les phases de téléchargement et de pré-mise à niveau ne sont pas perturbatrices et peuvent s’exécuter simultanément sur tous les nœuds. Le ciblage UUID est nécessaire uniquement pour la phase de mise à niveau elle-même, ce qui déclenche le redémarrage. Cela vous permet de contrôler l’ordre de redémarrage des nœuds : redémarrez d’abord le réplica, puis le primaire.

Pour récupérer des UUID de nœud, exécutez ou interrogez gh es config get-metadata``GET /manage/v1/config/nodes.

Mise à niveau d’un déploiement à haute disponibilité à l’aide de GitHub CLI

  1. Téléchargez le package sur tous les nœuds.

    gh es upgrade download --version VERSION
    
  2. Attendez que le téléchargement se termine sur tous les nœuds.

    gh es upgrade download status
    
  3. Exécutez la phase de pré-mise à niveau sur tous les nœuds en même temps. Cette phase n’est pas perturbatrice.

    gh es upgrade apply --version VERSION --phase pre-upgrade
    
  4. Attendez la fin de la phase de pré-mise à niveau.

    gh es upgrade status --verbose
    
  5. Activer le mode maintenance.

    gh es maintenance set --enabled true
    
  6. Arrêtez la réplication sur la réplique.

    ghe-repl-stop
    
  7. Mettez à niveau le premier principal, qui déclenche le redémarrage, puis surveillez sa progression.

    gh es upgrade apply --version VERSION --phase upgrade --uuid PRIMARY-UUID
    gh es upgrade status --uuid PRIMARY-UUID --verbose
    
  8. Une fois l’opération terminée sur le serveur principal, mettez à niveau le réplica, puis surveillez sa progression.

    gh es upgrade apply --version VERSION --phase upgrade --uuid REPLICA-UUID
    gh es upgrade status --uuid REPLICA-UUID --verbose
    
  9. Redémarrez la réplication sur la réplique.

    ghe-repl-start
    
  10. Vérifiez l’intégrité de la réplication et la version, puis désactivez le mode maintenance.

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

Mise à niveau d’un déploiement à haute disponibilité à l’aide de l’API REST

  1. Téléchargez le package sur tous les nœuds.

    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. Attendez que le téléchargement se termine sur tous les nœuds.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/download/status
    
  3. Exécutez la phase de pré-mise à niveau sur tous les nœuds en même temps. Cette phase n’est pas perturbatrice.

    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. Attendez la fin de la phase de pré-mise à niveau.

    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. Activer le mode maintenance.

    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. Arrêtez la réplication sur la réplique.

    ghe-repl-stop
    
  7. Mettez à niveau le premier principal, qui déclenche le redémarrage, puis surveillez sa progression.

    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. Une fois le réplica principal terminé, mettez à niveau le réplica, puis surveillez sa progression.

    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. Redémarrez la réplication sur la réplique.

    ghe-repl-start
    
  10. Vérifiez l’intégrité de la réplication et la version, puis désactivez le mode maintenance.

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