Skip to main content
Skip to content

Automatizando uma atualização

Você pode automatizar operações de atualização usando a API REST ou uma GitHub CLI extensão.

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

Automatizando uma atualização usando a API REST

  1. 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"}'
    
  2. 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/status
    

    Aguarde até que status exiba COMPLETED.

  3. 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"}'
    
  4. 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é status mostrar completed e is_running mostrar false.

  5. 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}'
    
  6. 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"}'
    
  7. 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
    
  8. 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

  1. Baixe o pacote de atualização. Para baixar uma versão específica, especifique o --version sinalizador; 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
    
  2. Confirme se o download foi concluído antes de continuar.

    gh es upgrade download status
    

    Aguarde até que status exiba COMPLETED.

  3. Execute a fase de pré-atualização da atualização.

    gh es upgrade apply --version VERSION --phase pre-upgrade
    
  4. Monitore a fase de pré-atualização até que ela seja concluída.

    gh es upgrade status --verbose
    

    Aguarde até status mostrar completed e is_running mostrar false.

  5. Habilitar o modo de manutenção

    gh es maintenance set --enabled true
    
  6. Aplique a fase de upgrade da atualização.

    gh es upgrade apply --version VERSION --phase upgrade
    
  7. Confirme se a versão de lançamento foi atualizada.

    gh es release version
    
  8. 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

  1. Baixe o pacote em todos os nós.

    gh es upgrade download --version VERSION
    
  2. Aguarde até que o download seja concluído em todos os nós.

    gh es upgrade download status
    
  3. 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
    
  4. Aguarde a conclusão da fase de pré-atualização.

    gh es upgrade status --verbose
    
  5. Habilitar o modo de manutenção

    gh es maintenance set --enabled true
    
  6. Pare a replicação na réplica.

    ghe-repl-stop
    
  7. 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
    
  8. 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
    
  9. Inicie a replicação novamente na réplica.

    ghe-repl-start
    
  10. 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

  1. 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"}'
    
  2. 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
    
  3. 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"}'
    
  4. 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"
    
  5. 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}'
    
  6. Pare a replicação na réplica.

    ghe-repl-stop
    
  7. 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"
    
  8. 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"
    
  9. Inicie a replicação novamente na réplica.

    ghe-repl-start
    
  10. 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}'