Skip to main content

Esta versão do GitHub Enterprise Server será descontinuada em 2026-03-17. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise Server. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

Migrando dados para GitHub Enterprise Server

Após gerar um arquivo de migração, você poderá importar os dados para a sua instância de destino do GitHub Enterprise Server. Antes de aplicar as alterações permanentemente na instância de destino, será possível revisá-las para resolver possíveis conflitos.

Preparando os dados migrados

  1. Usando o comando , copie o arquivo de migração gerado da sua instância de origem ou da organização para o destino do GitHub Enterprise Server:

    scp -P 122 PATH-TO-MIGRATION-GUID.tar.gz admin@HOSTNAME:/home/admin/
    
  2. SSH para sua instância do GitHub Enterprise Server de destino. Para saber mais, confira Acesar o shell administrativo (SSH).

    ssh -p 122 admin@HOSTNAME
    
  3. Verifique se o arquivo de migração tem permissões de leitura suficientes.

    chmod 644 /home/admin/MIGRATION-GUID.tar.gz
    
  4. Use o comando para preparar o arquivo para importação na instância de destino e gerar um novo GUID de Migração para você usar nas etapas seguintes:

    ghe-migrator prepare /home/admin/MIGRATION-GUID.tar.gz
    
    • Para iniciar uma nova tentativa de importação, execute novamente e obtenha um novo GUID de Migração.
    • Para especificar o local em que os arquivos de migração devem ser preparados, acrescente --staging-path=/full/staging/path ao comando. Assume o padrão de /data/user/tmp.

Gerar uma lista de conflitos de migração

  1. Usando o comando com o GUID de Migração, gere um arquivo conflicts.csv:

    ghe-migrator conflicts -g MIGRATION-GUID > conflicts.csv
    
    • Se nenhum conflito for relatado, você poderá importar os dados com segurança.
  2. Se houver conflitos, usando o comando , copie conflicts.csv para o computador local:

    scp -P 122 admin@HOSTNAME:conflicts.csv ~/Desktop
    
  3. Prossiga para Como resolver conflitos de migração ou configurar mapeamentos personalizados.

Revisar conflitos de migração

  1. Usando um editor de texto ou um software de planilha eletrônica compatível com CSV, abra conflicts.csv.
  2. Com as diretrizes dos exemplos e das tabelas de referência abaixo, revise o arquivo conflicts.csv para garantir que as ações adequadas sejam tomadas após a importação.

O arquivo conflicts.csv contém um mapa de migração de conflitos e ações recomendadas. O mapa de migração lista quais dados estão sendo migrados da origem e como eles serão aplicados ao destino.

model_namesource_urltarget_urlrecommended_action
userhttps://example-gh.source/octocathttps://example-gh.target/octocatmap
organizationhttps://example-gh.source/octo-orghttps://example-gh.target/octo-orgmap
repositoryhttps://example-gh.source/octo-org/widgetshttps://example-gh.target/octo-org/widgetsrename
teamhttps://example-gh.source/orgs/octo-org/teams/adminshttps://example-gh.target/orgs/octo-org/teams/adminsmerge
projecthttps://example-gh.source/octo-org/widgets/projects/1https://example-gh.target/octo-org/projects/1merge

Cada linha do conflicts.csv fornece as seguintes informações:

NomeDescrição
model_nameTipo de dado que está sendo alterado.
source_urlURL de origem dos dados.
target_urlURL esperada de destino dos dados.
recommended_actionA ação escolhida será tomada ao importar os dados.

Mapeamentos possíveis para cada tipo de registro

Há várias ações de mapeamento diferentes que o pode executar ao transferir os dados:

actionDescriçãoModelos aplicáveis
import(padrão) Os dados da origem são importados para o destino.Todos os tipos de registro
mapEm vez de criar um novo modelo com base nos dados de origem, um registro existente no destino é usado. Útil para importar um repositório para uma organização existente ou mapear identidades de usuário no destino para identidades de usuário na origem.Usuários, organizações, projetos
renameOs dados da origem são renomeados e copiados para o destino.Usuários, organizações, repositórios, projetos
map_or_renameSe houver destino, mapeie para o destino. Caso contrário, renomeie o modelo importado.Usuários
mergeOs dados da origem são combinados com os dados existentes no destino.Equipes, projetos

Sugerimos que você revise o arquivo conflicts.csv e use para garantir que as ações adequadas sejam executadas. Se estiver tudo certo, você poderá continuar.

Resolver conflitos de migração ou configurar mapeamentos personalizados

Se você acredita que o executará uma alteração incorreta, faça correções alterando os dados em conflicts.csv. É possível fazer alterações em qualquer uma das linhas do conflicts.csv.

Por exemplo, digamos que você observe que o usuário da origem está sendo mapeado para no destino.

model_namesource_urltarget_urlrecommended_action
userhttps://example-gh.source/octocathttps://example-gh.target/octocatmap

Você pode optar por mapear o usuário para outro usuário no destino. Suponha que você saiba que deve realmente ser no destino. Altere a coluna no conflicts.csv para que ela se refira a .

model_namesource_urltarget_urlrecommended_action
userhttps://example-gh.source/octocathttps://example-gh.target/monalisamap

Como outro exemplo, se quiser renomear o repositório como na instância de destino, altere a para e a para .

model_namesource_urltarget_urlrecommended_action
repositoryhttps://example-gh.source/octo-org/widgetshttps://example-gh.target/octo-org/amazing-widgetsrename

Adicionar mapeamentos personalizados

Uma situação comum durante as migrações é o cenário em que os usuários migrados têm nomes de usuários diferentes no destino e na origem.

Com uma lista de nomes de usuários da origem e uma lista de nomes de usuários do destino, você pode criar um arquivo CSV com mapeamentos personalizados e aplicá-la para garantir que o nome de usuário e o conteúdo de cada usuário sejam atribuídos corretamente no fim da migração.

Você pode gerar rapidamente um CSV de usuários que estão sendo migrados no formato CSV necessário para aplicar os mapeamentos personalizados usando o comando :

ghe-migrator audit -m user -g MIGRATION-GUID > users.csv

Agora, você pode editar esse CSV e inserir a nova URL para cada usuário que você deseja mapear ou renomear e atualizar a quarta coluna para ter ou , conforme apropriado.

Por exemplo, para renomear o usuário como no destino , crie uma linha com o seguinte conteúdo:

model_namesource_urltarget_urlstate
userhttps://example-gh.source/octocathttps://example-gh.target/monalisarename

O mesmo processo pode ser usado para criar mapeamentos em cada registro compatível com mapeamentos personalizados. Para obter mais informações, confira nossa tabela sobre os possíveis mapeamentos para registros.

Aplicar dados de migração modificados

  1. Depois de fazer alterações, use o comando para aplicar o conflicts.csv modificado (ou qualquer outro arquivo .csv de mapeamento no formato correto) à instância de destino:

    scp -P 122 ~/Desktop/conflicts.csv admin@HOSTNAME:/home/admin/
    
  2. Mapeie novamente os dados de migração usando o comando , transmitindo o caminho para o arquivo .csv modificado e o GUID de Migração:

    ghe-migrator map -i conflicts.csv -g MIGRATION-GUID
    
  3. Se o comando relatar que ainda há conflitos, execute o processo de resolução de conflitos de migração novamente.

Aplicar os dados importados em GitHub Enterprise Server

  1. SSH para sua instância do GitHub Enterprise Server de destino. Para saber mais, confira Acesar o shell administrativo (SSH).

    ssh -p 122 admin@HOSTNAME
    
  2. Usando o comando , inicie o processo de importação. Você precisará de:

    • Seu GUID de Migração. Para obter mais informações, confira Preparando os dados migrados para a importação no GitHub Enterprise Server.
    • Seu personal access token para autenticação. O personal access token que você usa se destina apenas à autenticação como administrador do site e não exige nenhum escopo específico ou permissões. Para saber mais, confira AUTOTITLE.
    $ ghe-migrator import /home/admin/MIGRATION-GUID.tar.gz -g MIGRATION-GUID -u USERNAME -p TOKEN
    
    > Starting GitHub::Migrator
    > Import 100% complete /
    
    • Para especificar o local em que os arquivos de migração devem ser preparados, acrescente --staging-path=/full/staging/path ao comando. Assume o padrão de /data/user/tmp.

Revisar dados de migração

Por padrão, retorna todos os registros. Também é possível filtrar os registros por:

  • Tipos de registro;
  • Estado dos registros

Os tipos de registros correspondem aos encontrados nos dados migrados.

Filtros por tipo de registro

Tipo de registroNome do filtro
Usuáriosuser
Organizaçõesorganization
Repositóriosrepository
Teamsteam
Marcosmilestone
Projetos (clássicos)project
Problemasissue
Comentários dos problemasissue_comment
Solicitações de pullpull_request
Revisões de pull requestpull_request_review
Comentários de commitcommit_comment
Comentários das revisões de pull requestpull_request_review_comment
Versõesrelease
Ações feitas em problemas ou em pull requestsissue_event
Ramificações protegidasprotected_branch

Filtros por estado de registro

Estado do registroDescrição
exportO registro será exportado.
importO registro será importado.
mapO registro será mapeado.
renameO registro será renomeado.
mergeO registro será mesclado.
exportedO registro foi exportado com êxito.
importedO registro foi importado com êxito.
mappedO registro foi mapeado com êxito.
renamedO registro foi renomeado com êxito.
mergedO registro passou por merge com êxito.
failed_exportHouve falha ao exportar o registro.
failed_importHouve falha ao importar o registro.
failed_mapO registro falhou em ser mapeado.
failed_renameHouve falha ao renomear o registro.
failed_mergeHouve falha ao fazer merge no registro.

Filtrar registros auditados

Com o comando , você pode filtrar os registros com base no tipo usando o sinalizador . Da mesma forma, você pode filtrar o estado de importação usando o sinalizador . O comando se parece com o seguinte:

ghe-migrator audit -m RECORD_TYPE -s STATE -g MIGRATION-GUID

Por exemplo, para visualizar todas as organizações e equipes importadas com êxito, você digitaria:

$ ghe-migrator audit -m organization,team -s mapped,renamed -g MIGRATION-GUID
> model_name,source_url,target_url,state
> organization,https://gh.source/octo-org/,https://ghe.target/octo-org/,renamed

Recomendamos fortemente auditar todas as importações que falharam. Para fazer isso, você vai inserir:

$ ghe-migrator audit -s failed_import,failed_map,failed_rename,failed_merge -g MIGRATION-GUID
> model_name,source_url,target_url,state
> user,https://gh.source/octocat,https://gh.target/octocat,failed
> repository,https://gh.source/octo-org/octo-project,https://ghe.target/octo-org/octo-project,failed

Caso tenha alguma dúvida sobre importações com falha, entre em contato conosco acessando o Suporte do GitHub Enterprise.

Concluir a importação em GitHub Enterprise Server

Depois que sua migração for aplicada à sua instância de destino e você tiver revisado a migração, você desbloqueará os repositórios e os excluirá da fonte. Antes de excluir os dados da origem, é recomendável aguardar cerca de duas semanas para garantir o funcionamento adequado de todos os procedimentos.

Desbloquear repositórios na instância de destino

  1. Conecte-se via SSH ao sua instância do GitHub Enterprise Server. 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ó. Substitua HOSTNAME pelo nome do host da instância ou pelo nome do host ou endereço IP de um nó. Para saber mais, confira Acesar o shell administrativo (SSH).

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Desbloqueie todos os repositórios importados com o comando ghe-migrator unlock. Você precisará de sua GUID de Migração:

$ ghe-migrator unlock -g MIGRATION-GUID
> Unlocked octo-org/octo-project

Aviso

Se o repositório contiver fluxos de trabalho do GitHub Actions usando o gatilho , os fluxos de trabalho não serão executados automaticamente após uma importação. Para iniciar os fluxos de trabalho agendados mais uma vez, envie uma confirmação para o repositório. Para saber mais, confira AUTOTITLE.

Desbloquear repositórios na origem

Após a conclusão da migração, você deve desbloquear os repositórios na origem.

Desbloqueando repositórios de uma organização no GitHub.com

Para desbloquear os repositórios em uma organização do GitHub.com, você enviará uma solicitação para o ponto de extremidade de desbloqueio da migração. Você precisará de:

  • Token de acesso para autenticação;
  • A característica exclusiva da migração
  • Nome do repositório a ser desbloqueado.
curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" -X DELETE \
  -H "Accept: application/vnd.github.wyandotte-preview+json" \
  https://api.github.com/orgs/ORG-NAME/migrations/ID/repos/REPO_NAME/lock

Excluir repositórios de uma organização no GitHub.com

Depois de desbloquear os repositórios da organização do GitHub.com, você deve excluir todos os repositórios já migrados usando o ponto de extremidade de exclusão do repositório. Você precisará do token de acesso para autenticação:

curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" -X DELETE \
  https://api.github.com/repos/ORG-NAME/REPO_NAME

Desbloquear repositórios de uma instância do GitHub Enterprise Server

  1. Conecte-se via SSH ao sua instância do GitHub Enterprise Server. 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ó. Substitua HOSTNAME pelo nome do host da instância ou pelo nome do host ou endereço IP de um nó. Para saber mais, confira Acesar o shell administrativo (SSH).

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Desbloqueie todos os repositórios importados com o comando ghe-migrator unlock. Você precisará de sua GUID de Migração:

$ ghe-migrator unlock -g MIGRATION-GUID
> Unlocked octo-org/octo-project