5. Migração para o GitHub

Serviços do Azure DevOps

Após a sincronização inicial ser concluída, seu repositório estará pronto para a transição. Conclua a transição dentro de 21 dias a partir do início da sincronização inicial.

Importante

A transição normalmente é concluída em menos de 30 minutos, período durante o qual o repositório do Azure DevOps fica em modo somente leitura. Embora o repositório esteja em modo somente leitura, pushes e atualizações em pull requests são bloqueados, mas os usuários ainda podem navegar e clonar. Notifique todas as equipes afetadas antes de agendar a substituição.

Antes de agendar a transição

Confirme as seguintes condições:

  • As sincronizações incrementais estão saudáveis e atualizadas.
  • As branches, tags e pull requests do repositório do GitHub estão presentes e corretos.
  • Todas as equipes afetadas são notificadas.
  • As URLs de Azure DevOps codificadas em pipelines, scripts e ferramentas são identificadas para atualização.

Note

O agendamento, o monitoramento e a aprovação da transição usam a CLI do Azure DevOps. Após a transição, você valida o repositório migrado no portal do GitHub. Para obter mais informações, consulte Concluir tarefas pós-migração.

Agendar transição

az devops migrations cutover set --org https://dev.azure.com/<org>
                                 --repository-id <repo-guid>
                                 --date "YYYY-MM-DDTHH:MM:SSZ"

Diretrizes de fuso horário: acrescente Z para UTC ou use um deslocamento como -08:00 para o Horário do Pacífico. Se você omitir o fuso horário, o fuso horário local será assumido. Para evitar ambiguidade entre equipes, inclua Z ou um deslocamento explícito.

Cancelar uma transição agendada

az devops migrations cutover cancel --org https://dev.azure.com/<org>
                                    --repository-id <repo-guid>

Note

O cutover cancel comando funciona somente enquanto a migração ainda está no estágio de sincronização . Depois que o estágio avança para Cutover, o servidor rejeita o pedido de cancelamento e a CLI retorna um código de saída diferente de zero. Se você precisar interromper um cutover que já está em andamento, use az devops migrations abandon ou entre em contato com a equipe do ELM.

O que acontece durante a transição

  1. O repositório Azure DevOps é colocado em um estado somente leitura controlado.
  2. O ELM executa a sincronização final. Os deltas restantes são aplicados ao GitHub.
  3. GitHub torna-se o sistema de registro autoritativo.
  4. Um banner é exibido na página do repositório do Azure DevOps que direciona os usuários para a nova localização no GitHub.
  5. O estado de migração está marcado como Migrado / com êxito.

Monitore o progresso da transição

az devops migrations status --org https://dev.azure.com/<org>
                            --repository-id <repo-guid>

Aguarde até que a migração mostre status: Succeeded e stage: Migrated.

Note

Os trabalhos do ELM são executados a cada 30 a 60 minutos. Se você agendar a substituição assim que a migração entrar no estágio de substituição, poderá levar até 60 minutos até que o trabalho de substituição seja iniciado.

Importante

Após a conclusão da transição, as solicitações de pull request abertas no GitHub não serão sincronizadas de volta com o Azure DevOps.

Examinar a substituição

Se a rewiring do pipeline estiver habilitada ou as falhas não resolvidas permanecerem no tempo de substituição agendado, o ELM pausa a migração no ReviewForCutover em vez de continuar automaticamente. Por exemplo, essa condição pode ocorrer quando algumas solicitações de pull não podem ser migradas. Examine as falhas e escolha explicitamente se deseja continuar.

Revisar falhas na transição

az devops migrations cutover review --org https://dev.azure.com/<org>
                                    --repository-id <repo-guid>

O comando retorna um resumo de itens não resolvidos:

Campo Description
failedCount Número de itens que não foram migrados.
blockedCount Número de itens bloqueados por dependências.
pendingCount Número de itens ainda pendentes.
totalUnprocessedCount Total de itens que exigem aprovação.
failedItems Lista detalhada de itens não processados com URL de estado, tipo e solicitação de pull.

Examine a failedItems lista cuidadosamente para entender quais itens não serão migrados se você optar por continuar.

Opções em ReviewForCutover

Depois de examinar as falhas, escolha uma das seguintes opções:

Opção O que faz Quando usar
Aprovar e continuar Aceita as falhas e avança para o cutover. Você revisou todas as falhas e concorda em prosseguir sem esses itens.
Limpar data de transição Redefine para Sincronização. A migração continua sincronizando. Você deseja corrigir os problemas primeiro e agendar uma nova substituição mais tarde.
Reprogramar transição Redefine para Sincronização com uma nova data de transição. Execute az devops migrations cutover set --date <new> novamente para definir uma nova data. Se as falhas forem resolvidas até a nova data, a migração ocorrerá automaticamente. Você quer mais tempo.
Excluir a migração Exclui o registro de migração. Um evento de auditoria é gravado; o repositório de Azure DevOps de origem permanece inalterado. Você deseja abandonar totalmente essa migração.
Pausar a migração Suspende a sincronização até que você a retome manualmente. Você precisa pausar todas as atividades enquanto investiga.

Aprovar transição

Se você decidir continuar, aprove a transição aceitando o número de itens a serem ignorados:

az devops migrations cutover approve --org https://dev.azure.com/<org>
                                     --repository-id <repo-guid>
                                     --accept-failures <N>
                                     --pipelines-verified

Defina <N> para um valor maior ou igual a totalUnprocessedCount da revisão da transição.

Inclua --pipelines-verified quando a revisão de substituição retornar requiresPipelineVerificationAcknowledgment: true. Esse sinalizador confirma que você revisou e verificou todos os pipelines religados. Você deve fornecer pelo menos um de --accept-failures ou --pipelines-verified.

Warning

A aprovação é irreversível. Não há nenhuma API para revogar uma aprovação. Se você aprovar por engano, o único caminho de recuperação será az devops migrations abandon seguido pela recriação da migração.

Note

Se novas falhas aparecerem após a revisão e antes de aprovar, o comando será rejeitado com um HTTP 400 exibido como uma CLIError indicação de que a contagem de falhas não corresponde mais. Execute cutover review novamente, anote a atualização totalUnprocessedCounte repita a aprovação. Scripts e ferramentas de automação podem identificar um código de saída diferente de zero.

Após a aprovação, a migração passa para ReadyForCutover:

  • Se uma data de migração já estiver agendada, a migração ocorrerá automaticamente na data e hora programadas.
  • Se nenhuma data de transição estiver definida, agende uma para prosseguir.

Próxima etapa