Você pode atualizar sua GitHub Enterprise Server instância usando a API de Gerenciamento GitHub Enterprise Server ou a gh es extensão para GitHub CLI. Essas ferramentas automatizam o processo de baixar o pacote de atualização, executar verificações de pré-atualização e aplicar a nova versão.
Pré-requisitos
- Faça backup de seus dados com GitHub Enterprise Server Backup Utilities.
- Agende uma janela de manutenção para os usuários finais.
- Verifique se você pode se autenticar na API de Gerenciamento GitHub Enterprise Server . Para obter mais informações, consulte Pontos de extremidade da API REST para administração do GitHub Enterprise.
Automatizando uma atualização usando a API REST
-
Baixe o pacote de atualização.
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"}' -
Confirme se o download foi concluído antes de continuar.
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/download/statusAguarde até que
statusexibaCOMPLETED. -
Aplique a fase de pré-atualização da atualização.
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"}' -
Monitore a fase de pré-atualização até que ela seja concluída.
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ "https://HOSTNAME:8443/manage/v1/upgrade/status?is_verbose=true"Aguarde até
statusmostrarcompletedeis_runningmostrarfalse. -
Habilitar o modo de manutenção
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}' -
Aplique a fase de atualização do upgrade.
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"}' -
Confirme se a versão de lançamento foi atualizada.
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/version -
Desabilite o modo de manutenção.
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}'
Automatizando uma atualização usando a GitHub CLI extensão
-
Baixe o pacote de atualização. Para baixar uma versão específica, especifique o
--versionsinalizador; caso contrário, a versão mais recente disponível será baixada.# Download a specific version gh es upgrade download --version VERSION # Or download the latest available version gh es upgrade download -
Confirme se o download foi concluído antes de continuar.
gh es upgrade download statusAguarde até que
statusexibaCOMPLETED. -
Execute a fase de pré-atualização da atualização.
gh es upgrade apply --version VERSION --phase pre-upgrade -
Monitore a fase de pré-atualização até que ela seja concluída.
gh es upgrade status --verboseAguarde até
statusmostrarcompletedeis_runningmostrarfalse. -
Habilitar o modo de manutenção
gh es maintenance set --enabled true -
Aplique a fase de upgrade da atualização.
gh es upgrade apply --version VERSION --phase upgrade -
Confirme se a versão de lançamento foi atualizada.
gh es release version -
Desabilite o modo de manutenção.
gh es maintenance set --enabled false
Atualizando uma implantação de alta disponibilidade
Para instâncias com uma réplica de alta disponibilidade (HA), as fases de download e pré-atualização não são disruptivas e podem ser executadas em todos os nós de uma só vez. O direcionamento UUID só é necessário para a fase de atualização em si, que dispara a reinicialização. Isso permite controlar a ordem em que os nós são reinicializados: primeiro, atualize a réplica; em seguida, a primária.
Para recuperar UUIDs de nó, execute gh es config get-metadata ou consulte GET /manage/v1/config/nodes.
Atualizando uma implantação de alta disponibilidade usando o GitHub CLI
-
Baixe o pacote em todos os nós.
gh es upgrade download --version VERSION -
Aguarde até que o download seja concluído em todos os nós.
gh es upgrade download status -
Execute a fase de pré-atualização em todos os nós de uma só vez. Essa fase não é disruptiva.
gh es upgrade apply --version VERSION --phase pre-upgrade -
Aguarde a conclusão da fase de pré-atualização.
gh es upgrade status --verbose -
Habilitar o modo de manutenção
gh es maintenance set --enabled true -
Pare a replicação na réplica.
ghe-repl-stop -
Atualize o primário primeiro, que dispara a reinicialização e, em seguida, monitore seu progresso.
gh es upgrade apply --version VERSION --phase upgrade --uuid PRIMARY-UUID gh es upgrade status --uuid PRIMARY-UUID --verbose -
Depois que o primário for concluído, atualize a réplica e, em seguida, monitore seu progresso.
gh es upgrade apply --version VERSION --phase upgrade --uuid REPLICA-UUID gh es upgrade status --uuid REPLICA-UUID --verbose -
Inicie a replicação novamente na réplica.
ghe-repl-start -
Verifique a integridade da replicação e a versão e desabilite o modo de manutenção.
gh es replication status gh es release version gh es maintenance set --enabled false
Atualizando uma implantação de alta disponibilidade usando a API REST
-
Baixe o pacote para todos os nós.
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"}' -
Aguarde até que o download seja concluído em todos os nós.
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ https://HOSTNAME:8443/manage/v1/upgrade/download/status -
Execute a fase de pré-atualização em todos os nós de uma só vez. Essa fase não é disruptiva.
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"}' -
Aguarde a conclusão da fase de pré-atualização.
curl -L \ -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \ -H "Content-Type: application/json" \ "https://HOSTNAME:8443/manage/v1/upgrade/status?is_verbose=true" -
Habilitar o modo de manutenção
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}' -
Pare a replicação na réplica.
ghe-repl-stop -
Atualize o primário primeiro, que dispara a reinicialização e, em seguida, monitore seu progresso.
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" -
Depois que o primário for concluído, atualize a réplica e, em seguida, monitore seu progresso.
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" -
Inicie a replicação novamente na réplica.
ghe-repl-start -
Verifique a integridade da replicação e a versão e desabilite o modo de manutenção.
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}'