Preparando os dados migrados
-
Usando o comando
scp
, 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/
-
SSH para sua instância do GitHub Enterprise Server de destino. Para obter mais informações, confira "Acesar o shell administrativo (SSH)".
ssh -p 122 admin@HOSTNAME
-
Use o comando
ghe-migrator prepare
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
ghe-migrator prepare
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
.
- Para iniciar uma nova tentativa de importação, execute
Gerar uma lista de conflitos de migração
-
Usando o comando
ghe-migrator conflicts
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.
-
Se houver conflitos, usando o comando
scp
, copie conflicts.csv para o computador local:scp -P 122 admin@HOSTNAME:conflicts.csv ~/Desktop
-
Prossiga para "Como resolver conflitos de migração ou configurar mapeamentos personalizados".
Revisar conflitos de migração
- Usando um editor de texto ou um software de planilha compatível com CSV, abra conflicts.csv.
- 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_name | source_url | target_url | recommended_action |
---|---|---|---|
user | https://example-gh.source/octocat | https://example-gh.target/octocat | map |
organization | https://example-gh.source/octo-org | https://example-gh.target/octo-org | map |
repository | https://example-gh.source/octo-org/widgets | https://example-gh.target/octo-org/widgets | rename |
team | https://example-gh.source/orgs/octo-org/teams/admins | https://example-gh.target/orgs/octo-org/teams/admins | merge |
project | https://example-gh.source/octo-org/widgets/projects/1 | https://example-gh.target/octo-org/projects/1 | merge |
Cada linha do conflicts.csv fornece as seguintes informações:
Nome | Descrição |
---|---|
model_name | Tipo de dado que está sendo alterado. |
source_url | URL de origem dos dados. |
target_url | URL esperada de destino dos dados. |
recommended_action | A ação preferencial ghe-migrator será tomada ao importar os dados. |
Mapeamentos possíveis para cada tipo de registro
Há várias ações de mapeamento diferentes que o ghe-migrator
pode executar ao transferir os dados:
action | Descrição | Modelos aplicáveis |
---|---|---|
import | (padrão) Os dados da origem são importados para o destino. | Todos os tipos de registro |
map | Em 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 |
rename | Os dados da origem são renomeados e copiados para o destino. | Usuários, organizações, repositórios, projetos |
map_or_rename | Se houver destino, mapeie para o destino. Se não houver, renomeie o modelo importado. | Usuários |
merge | Os dados da origem são combinados com os dados existentes no destino. | Equipes, projetos |
Sugerimos que você revise o arquivo conflicts.csv e use ghe-migrator audit
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 ghe-migrator
executará uma alteração incorreta, faça correções alterando os dados em conflicts.csv. Faça alterações em uma das linhas do conflicts.csv.
Por exemplo, digamos que você observe que o usuário octocat
da origem está sendo mapeado para octocat
no destino.
model_name | source_url | target_url | recommended_action |
---|---|---|---|
user | https://example-gh.source/octocat | https://example-gh.target/octocat | map |
Você pode optar por mapear o usuário para outro usuário no destino. Suponha que você saiba que octocat
deve realmente ser monalisa
no destino. Altere a coluna target_url
no conflicts.csv para que ela se refira a monalisa
.
model_name | source_url | target_url | recommended_action |
---|---|---|---|
user | https://example-gh.source/octocat | https://example-gh.target/monalisa | map |
Como outro exemplo, se quiser renomear o repositório octo-org/widgets
como octo-org/amazing-widgets
na instância de destino, altere a target_url
para octo-org/amazing-widgets
e a recommend_action
para rename
.
model_name | source_url | target_url | recommended_action |
---|---|---|---|
repository | https://example-gh.source/octo-org/widgets | https://example-gh.target/octo-org/amazing-widgets | rename |
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
:
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 map
ou rename
, conforme apropriado.
Por exemplo, para renomear o usuário octocat
como monalisa
no destino https://example-gh.target
, crie uma linha com o seguinte conteúdo:
model_name | source_url | target_url | state |
---|---|---|---|
user | https://example-gh.source/octocat | https://example-gh.target/monalisa | rename |
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
-
Depois de fazer alterações, use o comando
scp
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/
-
Mapeie novamente os dados de migração usando o comando
ghe-migrator map
, transmitindo o caminho para o arquivo .csv modificado e o GUID de Migração:ghe-migrator map -i conflicts.csv -g MIGRATION-GUID
-
Se o comando
ghe-migrator map -i conflicts.csv -g MIGRATION-GUID
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
-
SSH para sua instância do GitHub Enterprise Server de destino. Para obter mais informações, confira "Acesar o shell administrativo (SSH)".
ssh -p 122 admin@HOSTNAME
-
Usando o comando
ghe-migrator import
, inicie o processo de importação. Você precisará de:- Seu Migration GUID. Para obter mais informações, confira "Preparar os dados de migração para importar para o 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 obter mais informações, confira "Gerenciar seus tokens de acesso pessoal".
$ 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, ghe-migrator audit
retorna todos os registros. Também é possível filtrar os registros por:
- Tipos de registro;
- Estado de registro.
Os tipos de registros correspondem aos encontrados nos dados migrados.
Filtros por tipo de registro
Tipo de registro | Nome do filtro |
---|---|
Usuários | user |
Organizações | organization |
Repositórios | repository |
Teams | team |
Marcos | milestone |
Projetos (clássicos) | project |
Problemas | issue |
Comentários dos problemas | issue_comment |
Pull requests | pull_request |
Revisões de pull request | pull_request_review |
Comentários de commit | commit_comment |
Comentários das revisões de pull request | pull_request_review_comment |
Versões | release |
Ações feitas em problemas ou em pull requests | issue_event |
Branches protegidos | protected_branch |
Filtros por estado de registro
Estado de registro | Descrição |
---|---|
export | O registro será exportado. |
import | O registro será importado. |
map | O registro será mapeado. |
rename | O registro será renomeado. |
merge | O registro passará por merge. |
exported | O registro foi exportado com êxito. |
imported | O registro foi importado com êxito. |
mapped | O registro foi mapeado com êxito. |
renamed | O registro foi renomeado com êxito. |
merged | O registro passou por merge com êxito. |
failed_export | Houve falha ao exportar o registro. |
failed_import | Houve falha ao importar o registro. |
failed_map | Houve falha ao mapear o registro. |
failed_rename | Houve falha ao renomear o registro. |
failed_merge | Houve falha ao fazer merge no registro. |
Filtrar registros auditados
Com o comando ghe-migrator audit
, você pode filtrar os registros com base no tipo usando o sinalizador -m
. Da mesma forma, você pode filtrar o estado de importação usando o sinalizador -s
. 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 com falha. 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
Se tiver 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
-
Conecte-se via SSH ao GitHub.com. 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 obter mais informações, confira "Acesar o shell administrativo (SSH)".
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
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
Warning
Se o repositório contiver fluxos de trabalho do GitHub Actions usando o gatilho schedule
, 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 obter mais informações, confira "Eventos que disparam fluxos de trabalho".
Desbloquear repositórios na origem
Após a conclusão da migração, você deve desbloquear os repositórios na origem.
Desbloquear 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 DELETE
para o ponto de extremidade de desbloqueio da migração. Você precisará de:
- Token de acesso para autenticação;
- A
id
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
-
Conecte-se via SSH ao GitHub.com. 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 obter mais informações, confira "Acesar o shell administrativo (SSH)".
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
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