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
- Sauvegardez vos données avec GitHub Enterprise Server Backup Utilities.
- Planifiez une fenêtre de maintenance pour les utilisateurs finaux.
- Vérifiez que vous pouvez vous authentifier auprès de l’API Gérer GitHub Enterprise Server . Pour plus d’informations, consultez « Endpoints d’API REST pour l’administration de GitHub Enterprise ».
Automatisation d’une mise à niveau à l’aide de l’API REST
-
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"}' -
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/statusPatientez jusqu’à ce que
statusafficheCOMPLETED. -
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"}' -
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
statusaffichecompletedet queis_runningaffichefalse. -
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}' -
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"}' -
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 -
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
-
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 -
Vérifiez que le téléchargement est terminé avant de continuer.
gh es upgrade download statusPatientez jusqu’à ce que
statusafficheCOMPLETED. -
Effectuez la phase préalable à la mise à niveau.
gh es upgrade apply --version VERSION --phase pre-upgrade -
Surveillez la phase de pré-mise à niveau jusqu’à ce qu’elle se termine.
gh es upgrade status --verbosePatientez jusqu’à ce que
statusaffichecompletedet queis_runningaffichefalse. -
Activer le mode maintenance.
gh es maintenance set --enabled true -
Appliquez la phase de mise à niveau.
gh es upgrade apply --version VERSION --phase upgrade -
Vérifiez que la version de publication a été mise à jour.
gh es release version -
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
-
Téléchargez le package sur tous les nœuds.
gh es upgrade download --version VERSION -
Attendez que le téléchargement se termine sur tous les nœuds.
gh es upgrade download status -
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 -
Attendez la fin de la phase de pré-mise à niveau.
gh es upgrade status --verbose -
Activer le mode maintenance.
gh es maintenance set --enabled true -
Arrêtez la réplication sur la réplique.
ghe-repl-stop -
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 -
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 -
Redémarrez la réplication sur la réplique.
ghe-repl-start -
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
-
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"}' -
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 -
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"}' -
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" -
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}' -
Arrêtez la réplication sur la réplique.
ghe-repl-stop -
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" -
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" -
Redémarrez la réplication sur la réplique.
ghe-repl-start -
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}'