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
Observação: as relações de fork não são persistentes 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
Observação: bloquear um repositório impede todo o acesso de gravação ao repositório. 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 obter mais informações, 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".