Preparar a organização de origem em GitHub
-
Verifique se você tem permissões de proprietário nos repositórios da organização de origem.
-
Gerar um token de acesso com os escopos
repo
eadmin:org
no GitHub.com. -
Para minimizar o tempo de inatividade, faça uma lista de repositórios que você deseja exportar a partir da instância de origem. É possível adicionar vários repositórios a uma exportação de uma vez usando um arquivo de texto que lista a URL de cada repositório em uma linha separada.
Exportar repositórios da organização
Note
As relações de fork não persistem após uma migração.
Para exportar dados de repositório por meio do GitHub.com, use a API de Migrações.
No momento, a API de Migrações está em período de exibição. Ou seja, os pontos de extremidade e os parâmetros podem mudar no futuro.
Gerar arquivos de migração
Note
Bloquear um repositório impede todo o acesso de gravação a ele. Não é possível associar novas equipes ou colaboradores a um repositório bloqueado.
Se você estiver realizando uma execução de teste, você não precisará bloquear o repositório. Quando você migra dados de um repositório que está em uso, o GitHub recomenda o bloqueio do repositório. Para obter mais informações, confira "Sobre o ghe-migrator".
-
Informe os integrantes da organização que você fará uma migração. Dependendo do número de repositórios exportados, a exportação pode levar vários minutos. A migração completa (com importação) pode levar horas. Portanto, é recomendável fazer uma avaliação para determinar a duração do processo completo. Para saber mais, confira Sobre o ghe-migrator.
-
Inicie uma migração enviando uma solicitação
POST
ao ponto de extremidade da migração. Você precisará de:-
Token de acesso para autenticação;
-
Uma lista dos repositórios que você deseja migrar:
curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \ -X POST \ -H "Accept: application/vnd.github+json" \ -d'{"lock_repositories":true,"repositories":["ORG_NAME/REPO_NAME", "ORG_NAME/REPO_NAME"]}' \ https://api.github.com/orgs/ORG_NAME/migrations
-
Caso deseje bloquear os repositórios antes de migrá-los, defina
lock_repositories
comotrue
. Fazer isso é altamente recomendável. -
Você pode excluir anexos de arquivo transmitindo
exclude_attachments: true
para o ponto de extremidade. Anexos de arquivos podem ser grandes e gerar um volume desnecessário no seu arquivo de migração final. O tamanho do arquivo final precisa ter menos de 20 GB.
Essa solicitação retorna uma
id
exclusiva que representa a migração. Você precisará dele em ações subsequentes que envolvam a API de Migrações. -
-
Envie uma solicitação
GET
ao ponto de extremidade de status da migração para buscar o status de uma migração. Você precisará de:-
Token de acesso para autenticação;
-
A
id
exclusiva da migração:curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \ -H "Accept: application/vnd.github+json" \ https://api.github.com/orgs/ORG_NAME/migrations/ID
Os estados das migrações são os seguintes:
pending
, que significa que a migração ainda não foi iniciada.exporting
, que significa que a migração está em andamento.exported
, que significa que a migração foi concluída com êxito.failed
, que significa que a migração falhou.
-
-
Depois que a migração for exportada, baixe o arquivo de migração enviando uma solicitação
GET
ao ponto de extremidade de download da migração. Você precisará de:-
Token de acesso para autenticação;
-
A
id
exclusiva da migração:curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \ -H "Accept: application/vnd.github+json" \ -L -o migration_archive.tar.gz \ https://api.github.com/orgs/ORG_NAME/migrations/ID/archive
-
-
O arquivo de migração é excluído automaticamente após sete dias. Se preferir excluí-lo mais cedo, envie uma solicitação
DELETE
ao ponto de extremidade de exclusão do arquivo de migração. Você precisará de:-
Token de acesso para autenticação;
-
A
id
exclusiva da migração:curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \ -X DELETE \ -H "Accept: application/vnd.github+json" \ https://api.github.com/orgs/ORG_NAME/migrations/ID/archive
-
-
Para preparar os dados de migração arquivados para importação para uma instância do GitHub Enterprise Server, confira "Como migrar dados para o GitHub Enterprise Server".