Skip to main content

Atualizar o GitHub Enterprise Server

Atualize o GitHub Enterprise Server para usar os recursos e atualizações de segurança mais recentes.

Preparar para a atualização

  1. Determine uma estratégia de atualização e escolha uma versão para atualizar. Para obter mais informações, confira "Requisitos de atualização" e veja o Assistente de atualização para localizar o caminho de atualização da versão atual.

  2. Crie um backup da instância primária usando o GitHub Enterprise Server Backup Utilities. Para obter mais informações, confira o arquivo README.md na documentação do projeto do GitHub Enterprise Server Backup Utilities.

    Nota: sua versão do GitHub Enterprise Server Backup Utilities precisa ser a mesma versão ou, no máximo, duas versões posteriores de your GitHub Enterprise Server instance. Para obter mais informações, confira "Atualizar Utilitários de Backup do GitHub Enterprise Server".

  3. Se o your GitHub Enterprise Server instance usar executores efêmeros auto-hospedados para GitHub Actions e você tiver desabilitado atualizações automáticas, atualize seus executores para a versão do aplicativo executor que sua instância atualizada executará.

  4. Se você estiver atualizando com um pacote de atualização, programe um período de manutenção para os usuários finais do GitHub Enterprise Server. Se estiver usando um hotpatch, não será necessário recorrer ao modo de manutenção.

    Observação: a janela de manutenção depende do tipo de atualização a ser feita. Atualizações com hotpatch normalmente não exigem período de manutenção. É preciso reinicializar a instância em alguns casos, mas o processo pode ser feito em outro momento. Seguindo o esquema de versões do MAJOR.FEATURE.PATCH, as versões de patch que usam pacote de atualização costumam gerar menos de cinco minutos de tempo de inatividade. Versões de recursos que incluem migrações de dados levam mais tempo, dependendo do desempenho do armazenamento e da quantidade de dados migrados. Para obter mais informações, confira "Como habilitar e agendar o modo de manutenção".

Obter um instantâneo

Instantâneo é um ponto de verificação de uma máquina virtual (VM) em um momento específico. É altamente recomendável obter um instantâneo antes de atualizar sua máquina virtual para que você possa recuperar a VM em caso de falha. Apenas recomendamos tirar um instantâneo da VM quando o dispositivo estiver desligado ou em modo de manutenção e todos os trabalhos em segundo plano estiverem concluídos.

Se você estiver atualizando para uma nova versão do recurso, obtenha um instantâneo da VM. Se você estiver atualizando para uma versão de patch, vincule o disco de dados existente.

Há dois tipos de instantâneo:

  • Os instantâneos de VM salvam todo o estado da VM, incluindo os dados do usuário e da configuração. Esse método de instantâneo é demorado e requer muito espaço livre em disco.

  • Os instantâneos de disco de dados salvam apenas os dados do usuário.

    Observações:

    • Algumas plataformas não permitem usar instantâneos apenas do disco de dados. Nesse caso, você terá que obter um instantâneo de toda a VM.
    • Se o hipervisor não der suporte a instantâneos completos de VM, obtenha um instantâneo do disco raiz e do disco de dados em rápida sucessão.
PlataformaMétodo SnapshotURL de documentação de instantâneo
Amazon AWSDiscohttps://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html
AzureVMhttps://docs.microsoft.com/azure/backup/backup-azure-vms-first-look-arm
Hyper-VVMhttps://docs.microsoft.com/windows-server/virtualization/hyper-v/manage/enable-or-disable-checkpoints-in-hyper-v
Google Compute EngineDiscohttps://cloud.google.com/compute/docs/disks/create-snapshots
VMwareVMhttps://pubs.vmware.com/vsphere-50/topic/com.vmware.wssdk.pg.doc_50/PG_Ch11_VM_Manage.13.3.html

Atualizar com hotpatch

Você pode atualizar GitHub Enterprise Server para a versão mais recente do patch usando um hotpatch, que não requer uma janela de manutenção e geralmente não requer reinicialização.

Você pode usar hotpatching para atualizar para uma versão de patch mais recente, mas não uma versão de recursos. Por exemplo, você pode fazer upgrade da versão 2.10.1 para a 2.10.5, porque elas estão na mesma série de recursos, mas não da versão 2.10.9 para a 2.11.0, porque elas estão em uma série de recursos diferente.

Ao usar o Console de Gerenciamento, você pode instalar um hotpatch imediatamente ou programá-lo para instalação posterior. Você pode usar o shell administrativo para instalar um patch dinâmico com o utilitário ghe-upgrade. Para obter mais informações, confira "Atualizar requisitos".

Observações :

  • Se your GitHub Enterprise Server instance estiver executando a compilação de um candidato à versão, você não poderá atualizar com um hotpatch.

  • Instalando um hotpatch usando o Console de Gerenciamento não está disponível em ambientes com cluster. Para instalar um patch dinâmico em um ambiente clusterizado, confira "Como atualizar um cluster".

Atualizar um appliance com hotpatch

Instalar um hotpatch usando o Console de Gerenciamento

Você pode usar o Console de Gerenciamento para atualizar com um hotpatch, habilitando as atualizações automáticas. Em seguida, será apresentada a última versão de GitHub Enterprise Server disponível para a qual você pode atualizar.

Se o alvo de atualização que lhe foi apresentado for uma versão do recurso em vez de uma versão de patch, você não poderá usar Console de Gerenciamento para instalar um hotpatch. Você deve instalar o hotpatch usando o shell administrativo. Para obter mais informações, confira "Como instalar um patch dinâmico usando o shell administrativo".

  1. Habilitar as atualizações automáticas. Para obter mais informações, confira "Como habilitar atualizações automáticas".

  2. Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .

    Captura de tela do ícone de foguete para acesso às configurações de administração do site

  3. Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.

    Captura de tela do link "Administração do site" 1. Na barra lateral à esquerda, clique em Console de Gerenciamento . Guia Console de Gerenciamento na barra lateral esquerda 1. Na parte superior do Console de Gerenciamento, clique em Atualizações. Item do menu Atualizações

  4. Quando um novo hotpatch for baixado, use o menu suspenso Install package (Instalar pacote):

    • Para instalá-lo imediatamente, selecione Agora:
    • Para instalar depois, selecione outra data. Menu suspenso da data de instalação do patch dinâmico
  5. Clique em Instalar. Botão de instalação de patch dinâmico

Instalar hotpatch usando o shell administrativo

Observação: se você tiver habilitado as verificações de atualização automáticas, não precisará baixar o pacote de upgrade e poderá usar o arquivo que foi baixado automaticamente. Para obter mais informações, confira "Como habilitar verificações de atualização automáticas".

  1. Entre com o SSH no your GitHub Enterprise Server instance. Se sua instância for composta por vários nós, por exemplo, se a alta disponibilidade ou a replicação geográfica estiver configurada, efetue SSH no nó primário. Se você usar um cluster, poderá efetuar SSH em qualquer nó. Para obter mais informações sobre o acesso SSH, confira "Como acessar o shell administrativo (SSH)".

    $ ssh -p 122 admin@HOSTNAME
  2. Navegue até a página Versões do GitHub Enterprise Server. Ao lado da versão para a qual você está atualizando, clique em Baixar e clique na guia Upgrade. Copie a URL do pacote dinâmico de atualização (arquivo .hpkg).

  3. Baixe o pacote de atualização para o your GitHub Enterprise Server instance usando curl :

    admin@HOSTNAME:~$ curl -L -O UPGRADE-PKG-URL
  4. Execute o comando ghe-upgrade usando o nome do arquivo de pacote:

    admin@HOSTNAME:~$ ghe-upgrade GITHUB-UPGRADE.hpkg
    *** verifying upgrade package signature...
  5. Se for necessário reinicializar para aplicar as atualizações no kernel, MySQL, Elasticsearch ou em outros programas, você receberá uma notificação do script de atualização do hotpatch.

Atualizar um appliance com instâncias de réplica usando hotpatch

Observação: se estiver instalando um patch dinâmico, não haverá necessidade de entrar no modo de manutenção ou de interromper a replicação.

Appliances configurados para alta disponibilidade e replicação geográfica usam instâncias de réplica, além de instâncias principais. Para atualizar esses appliance, você terá que atualizar a instância primária e todas as instâncias de réplica, uma por vez.

Atualizar a instância primária

  1. Atualize a instância primária seguindo as instruções descritas em "Como instalar um patch dinâmico usando o shell administrativo".

Atualizar uma instância de réplica

Observação: se você estiver executando várias instâncias de réplica como parte da replicação geográfica, repita esse procedimento para cada instância de réplica, uma por vez.

  1. Atualize a instância de réplica seguindo as instruções descritas em "Como instalar um patch dinâmico usando o shell administrativo". Se você estiver usando várias réplicas de replicação geográfica, você deverá repetir esse procedimento para atualizar cada réplica por vez.

  2. Conecte-se à instância de réplica sobre o SSH como o usuário "admin" na porta 122:

    $ ssh -p 122 admin@replica-host
    1. Verifique a atualização executando:
    $ ghe-version

Atualizar com pacote de atualização

Mesmo que seja possível usar um hotpatch para fazer a atualização do patch em uma série, você deve usar um pacote de atualização a fim de atualizar para uma versão mais recente. Por exemplo, para atualizar da versão 2.11.10 para a 2.12.4, use um pacote de atualização, pois elas estão em séries de recursos diferentes. Para obter mais informações, confira "Atualizar requisitos".

Atualizar um appliance com pacote de atualização

Observação: se você tiver habilitado as verificações de atualização automáticas, não precisará baixar o pacote de upgrade e poderá usar o arquivo que foi baixado automaticamente. Para obter mais informações, confira "Como habilitar verificações de atualização automáticas".

  1. Entre com o SSH no your GitHub Enterprise Server instance. Se sua instância for composta por vários nós, por exemplo, se a alta disponibilidade ou a replicação geográfica estiver configurada, efetue SSH no nó primário. Se você usar um cluster, poderá efetuar SSH em qualquer nó. Para obter mais informações sobre o acesso SSH, confira "Como acessar o shell administrativo (SSH)".

    $ ssh -p 122 admin@HOSTNAME
  2. Navegue até a página Versões do GitHub Enterprise Server. Ao lado da versão para a qual você está atualizando, clique em Baixar e clique na guia Upgrade. Selecione a plataforma adequada e copie a URL do pacote de atualização (arquivo .pkg).

  3. Baixe o pacote de atualização para o your GitHub Enterprise Server instance usando curl :

    admin@HOSTNAME:~$ curl -L -O UPGRADE-PKG-URL
  4. Habilite o modo de manutenção e aguarde a conclusão de todos os processos ativos na instância do GitHub Enterprise Server. Para obter mais informações, confira "Como habilitar e agendar o modo de manutenção".

    Observação: ao atualizar o dispositivo primário em uma configuração de alta disponibilidade, o dispositivo já deverá estar no modo de manutenção se você seguir as instruções descritas em "Como atualizar a instância primária".

  5. Execute o comando ghe-upgrade usando o nome do arquivo de pacote:

    admin@HOSTNAME:~$ ghe-upgrade GITHUB-UPGRADE.pkg
    *** verifying upgrade package signature...
  6. Confirme que você gostaria de continuar a atualização e de reiniciar após a verificação da assinatura do pacote. O novo sistema de arquivos raiz grava na partição secundária, e a instância é reiniciada automaticamente em modo de manutenção:

    *** applying update...
    This package will upgrade your installation to version version-number
    Current root partition: /dev/xvda1 [version-number]
    Target root partition:  /dev/xvda2
    Proceed with installation? [y/N]
  7. Opcionalmente, para validar a atualização, configure uma lista de exceções de IP para permitir o acesso a uma lista especificada de endereços IP. Para obter mais informações, confira "Validar alterações no modo de manutenção usando a lista de exceções de IP".

  8. Para atualizações de dispositivo único, desabilite o modo de manutenção para que os usuários possam usar o your GitHub Enterprise Server instance.

    Observação: ao atualizar dispositivos em configurações de alta disponibilidade, mantenha o modo de manutenção até atualizar todas as réplicas e a replicação estar atual. Para obter mais informações, confira "Como atualizar uma instância de réplica".

Atualizar um appliance com instâncias de réplica usando um pacote de atualização

Appliances configurados para alta disponibilidade e replicação geográfica usam instâncias de réplica, além de instâncias principais. Para atualizar esses appliance, você terá que atualizar a instância primária e todas as instâncias de réplica, uma por vez.

Atualizar a instância primária

Aviso: se a replicação for interrompida em caso de falha da instância primária, será perdido qualquer trabalho feito antes da atualização da réplica e do reinício da replicação.

  1. Na instância primária, habilite o modo de manutenção e aguarde a conclusão de todos os processos ativos. Para obter mais informações, confira "Como habilitar o modo de manutenção".
  2. Conecte-se à instância de réplica sobre o SSH como o usuário "admin" na porta 122:
    $ ssh -p 122 admin@replica-host
  3. Na instância de réplica (ou em todas as instâncias de réplica), se você estiver executando várias réplicas como parte da replicação geográfica, execute ghe-repl-stop para interromper a replicação.
  4. Atualize a instância primária seguindo as instruções descritas em "Como atualizar um dispositivo individual com um pacote de atualização".

Atualizar uma instância de réplica

Observação: se você estiver executando várias instâncias de réplica como parte da replicação geográfica, repita esse procedimento para cada instância de réplica, uma por vez.

  1. Atualize a instância de réplica seguindo as instruções descritas em "Como atualizar um dispositivo individual com um pacote de atualização". Se você estiver usando várias réplicas de replicação geográfica, você deverá repetir esse procedimento para atualizar cada réplica por vez.

  2. Conecte-se à instância de réplica sobre o SSH como o usuário "admin" na porta 122:

    $ ssh -p 122 admin@replica-host
    1. Verifique a atualização executando:
    $ ghe-version
  3. Na instância de réplica, execute ghe-repl-start para iniciar a replicação.

  4. Na instância de réplica, para verificar se os serviços de replicação estão sendo executados corretamente, execute ghe-repl-status. Este comando retornará OK para todos os serviços quando uma replicação bem sucedida estiver em andamento e a réplica for atualizada. Se o comando retorna Replication is not running, talvez a replicação ainda esteja sendo iniciada. Aguarde cerca de um minuto antes de executar ghe-repl-status novamente.

    Note: While the resync is in progress ghe-repl-status may return expected messages indicating that replication is behind. For example: CRITICAL: git replication is behind the primary by more than 1007 repositories and/or gists

    Se ghe-repl-status não tiver retornado OK, entre em contato com o GitHub Enterprise Support. Para obter mais informações, confira "Como receber ajuda do GitHub Support".

  5. Quando você concluir a atualização da última réplica e quando a ressincronização terminar, desabilite o modo de manutenção para que os usuários possam usar o your GitHub Enterprise Server instance.

Restaurar após uma atualização com falha

Em caso de falha ou interrupção da atualização, volte a sua instância ao estado anterior. Esse processo dependerá do tipo de atualização.

Voltar a uma versão de patch

Para reverter uma versão de patch, use o comando ghe-upgrade com a opção --allow-patch-rollback. Antes de reverter tudo, a replicação precisa ser temporariamente parada com a execução de ghe-repl-stop em todas as instâncias de réplica. Ao reverter uma atualização, você precisa usar um arquivo de pacote de atualização com a extensão .pkg. Não há suporte para arquivos de pacote de patch dinâmico com a extensão .hpkg.

ghe-upgrade --allow-patch-rollback EARLIER-RELEASE-UPGRADE-PACKAGE.pkg

É necessário reinicializar após a execução do comando. Reverter não afeta a partição de dados, pois as migrações não são executadas nas versões de patch.

Depois que a reversão for concluída, reinicie a replicação executando ghe-repl-start em todas as réplicas.

Para obter mais informações, confira "Utilitários de linha de comando".

Voltar a uma versão de recurso

Para voltar a partir de uma versão de recurso, faça a restauração partindo de um instantâneo da VM para garantir o estado consistente das partições raiz e de dados. Para obter mais informações, confira "Como criar um instantâneo".

Leitura adicional