Preparar a organização de origem em GitHub
-
Verifique se você tem permissões de proprietário nos repositórios de origem da organização.
-
Generate an access token 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
Nota: Relações de bifurcação não persistem após a migração.
Para exportar os dados do repositório 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. Para acessar a API de Migrações, você deve informar um tipo de mídia personalizado no cabeçalho Accept
: application/vnd.github.wyandotte-preview+json
. Os exemplos abaixo incluem o tipo de mídia personalizado.
Gerar arquivos de migração
Nota: Bloquear um repositório impede que os usuários façam push para o repositório ou modifiquem os recursos de um repositório, como issues, etiquetas, marcos, wikis e comentários. Novas equipes e colaboradores não podem ser associados a um repositório bloqueado.
Se você estiver realizando uma execução de teste, não precisa bloquear repositórios. Caso contrário, é altamente recomendado. Para obter mais informações, consulte "Sobre migrações".
-
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, consulte "Sobre migrações".
-
Comece a migração fazendo
POST
no ponto de extremidade da migração. Você precisará do seguinte:- Token de acesso para autenticação;
- Uma lista de repositórios que você pretende migrar:
curl -H "Authorization: token GITHUB_ACCESS_TOKEN" -X POST \ -H "Accept: application/vnd.github.wyandotte-preview+json" \ -d'{"lock_repositories":true,"repositories":["orgname/reponame", "orgname/reponame"]}' \ https://api.github.com/orgs/orgname/migrations
- Se quiser bloquear os repositórios antes da migração, verifique se
lock_repositories
está definido comotrue
. Fazer isso é altamente recomendável. - Você pode excluir anexos de arquivos adicionando
exclude_attachments: true
ao 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 deve ser menor do que 20 GB.
A solicitação retorna um
id
exclusivo que representa a migração. Você precisará dele em ações subsequentes que envolvam a API de Migrações. -
Envie uma solicitação
GET
para o ponto de extremidade de status da migração para fazer fetch do status da migração. Você precisará do seguinte:- Token de acesso para autenticação;
id
exclusivo da migração.curl -H "Authorization: token GITHUB_ACCESS_TOKEN" \ -H "Accept: application/vnd.github.wyandotte-preview+json" \ https://api.github.com/orgs/orgname/migrations/id
Os estados das migrações são os seguintes:
pending
, a migração ainda não começou;exporting
, a migração está em andamento;exported
, a migração foi concluída com êxito;failed
, houve falha na migração.
-
Depois de exportar a migração, baixe o aquivo de migração enviando uma solicitação
GET
para o ponto de extremidade de download da migração. Você precisará do seguinte:- Token de acesso para autenticação;
id
exclusivo da migração.curl -H "Accept: application/vnd.github.wyandotte-preview+json" \ -u GITHUB_USERNAME:GITHUB_ACCESS_TOKEN \ -L -o migration_archive.tar.gz \ https://api.github.com/orgs/orgname/migrations/id/archive
-
O arquivo de migração é excluído automaticamente após sete dias. Para excluí-lo antes, você pode enviar a solicitação
DELETE
para o ponto de extremidade de exclusão do arquivo de migração. Você precisará do seguinte:- Token de acesso para autenticação;
id
exclusivo da migração.curl -H "Authorization: token GITHUB_ACCESS_TOKEN" -X DELETE \ -H "Accept: application/vnd.github.wyandotte-preview+json" \ https://api.github.com/orgs/orgname/migrations/id/archive
-
Para importar os dados de migração arquivados para uma instância do GitHub Enterprise Server consulte "Importing migration data to GitHub Enterprise Server".