Migrar de um projeto público para GitHub

Serviços do Azure DevOps

Importante

Projetos públicos em Azure DevOps são desativados. A partir de 2027, os projetos públicos existentes são convertidos em privados. Para obter mais informações, consulte Desativação de projetos públicos e Migre de um projeto público para o GitHub.

Este artigo mostra como migrar cada área de serviço de um projeto público Azure DevOps para seu GitHub equivalente. Ele abrange repositórios, pipelines, wikis, artefatos e itens de trabalho.

Pré-requisitos

Requirement Detalhes
acesso ao Azure DevOps Membro do projeto com pelo menos acesso Básico
Conta do GitHub Uma conta GitHub com permissão para criar repositórios
Git Git instalado localmente
GitHub CLI (opcional) GitHub CLI para operações simplificadas

Migrar repositórios

Repositórios GitHub dão suporte à colaboração aberta com pull requests, forks e estrelas.

Usar o importador GitHub Enterprise

GitHub Enterprise Importer é a ferramenta recomendada para migrar repositórios do Azure DevOps Cloud para GitHub Enterprise Cloud. Ele migra a origem do Git (incluindo histórico de confirmação), solicitações de pull, histórico do usuário, links de item de trabalho em solicitações de pull, anexos e políticas de branch.

  1. Instale a extensão de migração da CLI GitHub:

    gh extension install github/gh-gei
    
  2. Autentique com Azure DevOps e GitHub:

    # Sign in to Azure DevOps with Microsoft Entra ID and set the token
    az login
    export ADO_PAT=$(az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken -o tsv)
    
    # Authenticate with GitHub
    gh auth login
    
  3. Gere um script de migração para uma organização Azure DevOps:

    gh gei generate-script --ado-org {organization} --github-org {github-org} --output migrate.sh
    
  4. Ou migre um único repositório:

    gh gei migrate-repo --ado-org {organization} --ado-team-project {project} \
      --ado-repo {repo} --github-org {github-org} --github-repo {new-repo}
    

Para obter mais informações, consulte Compreendendo migrações de Azure DevOps para GitHub.

Usar importador de GitHub

Para uma opção mais simples baseada em navegador, use o importador de GitHub interno:

  1. Entre no GitHub e selecione Novo repositório.
  2. Insira um nome de repositório e defina a visibilidade como Pública.
  3. Selecione Importar um repositório na parte superior da página.
  4. Insira a URL do clone do Azure DevOps: https://dev.azure.com/{organization}/{project}/_git/{repo}.
  5. Se solicitado, insira suas credenciais de Azure DevOps. Entre usando Microsoft Entra ID. Se você precisar usar um token de acesso pessoal, crie um com o escopo de Leitura de Código>. Para obter mais informações, confira Usar tokens de acesso pessoal.
  6. Selecione Iniciar importação.

O Importador do GitHub migra a origem do Git e o histórico de commits, mas não migra pull requests, links de item de trabalho ou políticas de ramificação. Para obter mais informações, consulte Importando um repositório com GitHub Importer.

Importar da linha de comando

Se o GitHub Enterprise Importer não atender às suas necessidades, faça push diretamente de um clone local.

# Clone the Azure DevOps repository with full history
git clone --bare https://dev.azure.com/{organization}/{project}/_git/{repo}
cd {repo}.git

# Push to the new GitHub repository
git push --mirror https://github.com/{owner}/{new-repo}.git

Importante

Examine o histórico do Git para obter credenciais, chaves de API ou dados confidenciais antes de enviar por push para um repositório de GitHub público. Use ferramentas como o repositório de filtro git para remover conteúdo confidencial do histórico.

Migrar pipelines

GitHub Actions oferece fluxos de trabalho flexíveis e minutos de executor gratuitos para repositórios públicos.

Use o Importador do GitHub Actions

GitHub Actions Importer automatiza a conversão dos pipelines em Azure DevOps para fluxos de trabalho do GitHub Actions.

  1. Instale a extensão CLI do Importador do GitHub Actions:

    gh extension install github/gh-actions-importer
    
  2. Realize uma auditoria para identificar pipelines que precisam ser migrados.

    gh actions-importer audit azure-devops \
      --output-dir audit-results
    
  3. Converter um pipeline específico:

    gh actions-importer migrate azure-devops pipeline \
      --target-url https://github.com/{owner}/{repo} \
      --pipeline-id {pipeline-id} \
      --output-dir migration-results
    

Para obter mais informações, consulte Migrate de Azure DevOps para GitHub Actions com GitHub Actions Importer.

Principais diferenças entre Azure Pipelines e GitHub Actions

Azure Pipelines GitHub Actions
azure-pipelines.yml .github/workflows/*.yml
Estágios, trabalhos, etapas Trabalhos, etapas (fluxos de trabalho reutilizáveis para estágios)
Conexões de serviço GitHub segredos e OIDC
Pools de agentes Rótulos de Runner (ubuntu-latest, windows-latest)
Referências de tarefa (task@version) Referências de ação (owner/action@version)

Migrar conteúdo wiki

Use GitHub Wiki ou páginas GitHub para publicar guias e manuais.

Migrar para GitHub Wiki

Azure DevOps wikis são repositórios Git. Clone e faça push diretamente:

# Clone the Azure DevOps wiki repository
git clone https://dev.azure.com/{organization}/{project}/_git/{project}.wiki

cd {project}.wiki

# Add the GitHub wiki as a remote
git remote add github https://github.com/{owner}/{repo}.wiki.git

# Push to GitHub wiki
git push github main

Note

Antes de enviar por push, crie pelo menos uma página wiki em seu repositório GitHub para inicializar o repositório wiki. Selecione a guia Wiki no repositório GitHub e crie uma página.

Migrar para páginas de GitHub

Para projetos de documentação pesada, GitHub Pages fornece um site estático completo hospedado diretamente do repositório. Você pode usar geradores de site estáticos como Jekyll ou MkDocs para converter seu conteúdo wiki em um site publicado.

Migrar artefatos

GitHub Packages oferece suporte à publicação e ao consumo de pacotes NuGet, npm e Maven.

Mover pacotes para pacotes de GitHub

  1. Baixe pacotes existentes do feed de Azure Artifacts.
  2. Reconfigure a origem do pacote para apontar para pacotes de GitHub.
  3. Publique pacotes no novo feed.

Por exemplo, para migrar um pacote npm:

# Set the GitHub Packages registry
npm config set @{owner}:registry https://npm.pkg.github.com

# Authenticate
npm login --registry=https://npm.pkg.github.com

# Publish
npm publish

Registros alternativos

Para pacotes que precisam de ampla visibilidade pública, considere os registros públicos:

Tipo de pacote Registro público
NuGet nuget.org
npm npmjs.com
Maven Maven Central
Python PyPI
Cargo crates.io

Migrar itens de trabalho

GitHub Problemas e Projetos fornecem ferramentas modernas para gerenciar bugs e solicitações de recursos.

Não há nenhuma ferramenta de migração embutida para itens de trabalho do Azure Boards para Issues do GitHub. Várias opções de comunidade estão disponíveis:

  • Azure DevOps para GitHub migrador de problemas — ferramentas de software livre em GitHub que convertem itens de trabalho em problemas, preservando títulos, descrições e rótulos.
  • CSV export/import — exportar itens de trabalho de Azure Boards como CSV e, em seguida, usar a CLI ou a API GitHub para criar problemas.
  • REST API scripting — use o Azure DevOps Work Items REST API e o GitHub Issues REST API para desenvolver um script de migração personalizado.

Exportar itens de trabalho com a CLI do Azure DevOps

# Export work items from a query
az boards query --wiql "SELECT [System.Id], [System.Title], [System.State] FROM workitems WHERE [System.TeamProject] = '{project}'" --organization https://dev.azure.com/{organization} --output table

Dica

Priorizar a migração de itens de trabalho ativos e recentes. Itens fechados ou históricos podem não precisar de migração. Você pode mantê-los acessíveis no projeto privado para referência.

Substituir painéis de controle

GitHub não tem um único recurso de painel equivalente a dashboards Azure DevOps. Em vez disso, funcionalidades semelhantes são distribuídas em vários recursos nativos.

Uso do painel do Azure DevOps Equivalente do GitHub
Acompanhamento de trabalho e burndown GitHub Projects com gráficos integrados do Insights
Atividade do repositório Insights do repositório (commits, PRs, tráfego, contribuidores)
Status de Compilação e CI GitHub Actions histórico de execução de fluxo de trabalho e distintivos de status
Transparência pública Problemas, solicitações de pull, versões e selos README

Para painéis no nível da organização que agregam dados em vários repositórios, explore integrações no GitHub Marketplace.

Lista de verificação pós-migração

Depois de migrar seu conteúdo, verifique os seguintes itens:

  • [ ] Todos os repositórios Git estão disponíveis no GitHub com histórico completo.
  • [ ] Fluxos de trabalho de CI/CD são executados com êxito em GitHub Actions.
  • [ ] O conteúdo wiki é renderizado corretamente em páginas do GitHub Wiki ou GitHub Pages.
  • [ ] Pacotes publicam e restauram do novo registro.
  • [ ] Os itens de trabalho ativos são rastreados em issues do GitHub.
  • [ ] Links externos e selos apontam para os novos GitHub locais.
  • [ ] Colaboradores e membros da comunidade são informados do novo local.
  • [ ] README no projeto Azure DevOps direciona os visitantes para o novo local de GitHub.