Skip to main content

Solução de problemas de migrações dinâmicas do GitHub Enterprise Server para o GHE.com

Conselhos para problemas que você pode encontrar com sua migração.

Observação

Enterprise Live Migrations está dentro prévia pública e sujeito a alterações.

Se a migração encontrar um problema, verifique o status da migração com elm migration status --migration-id MIGRATION-ID e revise as informações de erro.

StatusMeaningAção recomendada
CriadoA migração foi criada, mas ainda não foi iniciadaExecute elm migration start
QueuedA migração está aguardando o inícioWait
ExportadoresOs dados estão sendo exportados da origemMonitorar com elm migration status
Em processamentoOs dados exportados estão sendo importados para o destinoMonitorar com elm migration status
Pronto para substituiçãoA migração inicial está concluída e a migração está pronta para mudança.Quando estiver pronto, execute elm migration cutover-to-destination
TransiçãoO repositório de origem está bloqueado e as alterações restantes estão sendo aplicadas ao destinoMonitor; o status fará a transição para Concluído
CompletedA migração foi concluída com êxitoVerifique o repositório de destino e recupere os modelos
FalhouA migração encontrou uma falha irrecuperávelInvestigar o erro (veja abaixo)
PausadoA migração está pausadaVerifique o motivo da pausa e resolva (veja abaixo)
TerminadaA migração foi canceladaN/A
DegradadoO destino é inacessívelVerificar a conectividade de rede entre o dispositivo GitHub Enterprise Server e GHE.com (veja abaixo)

O status da migração é "Falha"

Uma migração entra no status com falha quando um erro irrecuperável o impede de continuar. Isso é diferente dos recursos individuais que não foram importados. Uma migração com falha significa que a migração em si não pode continuar.

Para investigar, execute elm migration status --migration-id MIGRATION-ID e examine os detalhes do erro na resposta. Cada falha inclui uma ID de correlação no formato (Correlation ID for Support: UUID). Se você entrar em contato Suporte do GitHub, forneça esta ID para que a equipe de suporte possa investigar.

Depois de resolver o problema subjacente, anule a migração falha com elm migration cancel --migration-id MIGRATION-ID e inicie uma nova migração.

O status da migração é "Pausado"

Uma migração entra no status pausado quando um problema requer sua intervenção antes que ele possa continuar. Execute elm migration status --migration-id MIGRATION-ID e verifique o motivo da pausa.

Motivos comuns de pausa:

  • Expiração da credencial: Uma das personal access tokens (classic) expirou. Crie um novo token com os escopos necessários e atualize-o com elm credential update. Em seguida, reinicie a migração.
  • Limitação de taxa: a migração esbarrou nos limites de taxa da API. Aguarde alguns minutos e reinicie.

Para reiniciar uma migração pausada depois de resolver o problema subjacente:

elm migration start --migration-id MIGRATION-ID

O status da migração é "Degradado"

Um status degradado significa que o serviço de migração no GitHub Enterprise Server dispositivo não pode alcançar a empresa de destino. A migração continua no lado da origem, mas o status de destino é desconhecido.

Verifique a conectividade de rede entre o GitHub Enterprise Server equipamento e o seu subdomínio de GHE.com, em seguida, execute elm migration status --migration-id MIGRATION-ID novamente. A resposta de status inclui um carimbo de data/hora do último contato bem-sucedido com o destino, ajudando a determinar há quanto tempo o problema de conectividade está ocorrendo.

Migração presa em "Exportando"

Se a migração permanecer no status de Exportação sem nenhuma alteração de progresso por 30 minutos ou mais, o exportador poderá ficar preso.

  1. Execute elm migration status --migration-id MIGRATION-ID e observe se as contagens de recursos estão sendo alteradas.

  2. Se as contagens forem estáticas, verifique a conectividade de rede do dispositivo com o destino.

  3. Examine os logs do GitHub Enterprise Server exportador no dispositivo (requer acesso de administrador SSH):

    Shell
    journalctl -t elm-exporter-backfiller --since "1 hour ago" | tail -50
    journalctl -t elm-exporter-sender --since "1 hour ago" | tail -50
    
  4. Se a tarefa do exportador falhar, ela deverá ser recuperada automaticamente. Se isso não acontecer, entre em contato com Suporte do GitHub.

Sincronização do Git não concluída

Se elm migration status indicar que o push inicial do Git não foi concluído após um longo período, verifique os logs do sincronizador Git:

Shell
journalctl -t elm-exporter-git-syncer --since "2 hours ago"

Pesquisar por:

  • connection refused: um problema de rede entre o GitHub Enterprise Server dispositivo e o destino. Verifique as regras de firewall e a resolução DNS.
  • authentication failed: O personal access token (classic) pode não ter os escopos necessários ou pode ter expirado.
  • remote: error: o destino pode estar rejeitando o push. Entre em contato com Suporte do GitHub e informe os detalhes do erro.

Alguns recursos não foram importados

Os recursos individuais podem falhar ao importar sem causar falha na migração geral. Você pode ver uma contagem de recursos falhados na saída de elm migration status --migration-id MIGRATION-ID.

Os recursos com falha são mostrados somente depois que todas as novas tentativas automáticas tiverem sido esgotadas, portanto, todas as falhas que você vê são confirmadas como insolvíveis sem intervenção. Revise os detalhes do erro na resposta de status: cada recurso que falhar em processos de preenchimento retroativo ou atualizações ao vivo será exibido com "state": "failed".

Se o número e os tipos de recursos com falha forem aceitáveis, você poderá continuar com a substituição. Caso contrário, anule a migração, resolva o problema subjacente e inicie uma nova migração.

Falha na substituição e o repositório de origem está bloqueado

Se uma migração falhar parcialmente, o repositório de origem poderá permanecer bloqueado ou arquivado. Isso impede que os desenvolvedores façam push para o repositório de origem quando o destino ainda pode estar incompleto.

Para desbloquear o repositório de origem, um administrador de site deve desbloqueá-lo do GitHub Enterprise ServerConsole de Gerenciamento.

Depois que a origem for desbloqueada, você poderá tentar novamente a substituição usando elm migration cutover-to-destination --migration-id MIGRATION-ID, ou anular a migração com elm migration cancel --migration-id MIGRATION-ID e iniciar uma nova migração quando estiver pronto.

A migração deve ser reiniciada devido a um push de força

Se alguém executar um push forçado para o ramo padrão do repositório de origem durante uma migração em andamento, a sincronização do Git entre o repositório de origem e o de destino é interrompida. Forçar pushes reescreve o histórico de confirmação de uma maneira que não pode ser reconciliada incrementalmente.

Se isso acontecer, aborte a migração elm migration cancel --migration-id MIGRATION-ID e inicie uma nova migração. Antes de reiniciar, comunique à sua equipe que pushes forçados para o branch padrão não são permitidos enquanto uma migração está ativa.

O token de acesso foi rejeitado

Se a migração falhar com um erro de autenticação, verifique se:

  • Os tokens de origem e de destino são personal access tokens (classic). Não há suporte para tokens refinados.
  • Os tokens têm os escopos especificados em Migrando seu repositório com Enterprise Live Migrations.
  • Se a organização de destino impor o logon único do SAML, o token deverá ser autorizado para SSO.

Se você tiver girado um token recentemente, a migração obterá novas credenciais automaticamente. Você não precisa executar ghe-config-apply ou reiniciar o serviço de migração.

A URL de origem do GHES foi rejeitada

Enterprise Live Migrations requer a GitHub Enterprise Server URL para usar HTTPS. Se a URL estiver configurada com HTTP, a migração falhará na validação de pré-vôo.

Coletando logs para suporte

Ao entrar em contato com Suporte do GitHub, os artefatos mais úteis são:

  1. Um pacote de suporte (preferencial): execute ghe-support-bundle -u no GitHub Enterprise Server dispositivo. Isso captura automaticamente todos os logs do ELM.
  2. Saída de status de migração: elm migration status --migration-id MIGRATION-ID
  3. A ID de migração e o tempo aproximado de falha (com fuso horário)
  4. Todas as IDs de correlação de mensagens de erro

Se um pacote de suporte não for possível, você poderá coletar logs manualmente:

Shell
journalctl -t elm-exporter-migration-manager --since "24 hours ago" > migration-manager.log
journalctl -t elm-exporter-backfiller --since "24 hours ago" > backfiller.log
journalctl -t elm-exporter-sender --since "24 hours ago" > sender.log
journalctl -t elm-exporter-git-syncer --since "24 hours ago" > git-syncer.log