Eseguire la migrazione da un progetto pubblico a GitHub

Servizi di Azure DevOps

Importante

I progetti pubblici in Azure DevOps vengono ritirati. A partire dal 2027, i progetti pubblici esistenti si converteno in privato. Per ulteriori informazioni, vedere Discontinuazione dei progetti pubblici e Migrare da un progetto pubblico a GitHub.

Questo articolo illustra come eseguire la migrazione di ogni area di servizio da un progetto pubblico Azure DevOps al relativo equivalente GitHub. Vengono trattati repository, pipeline, wiki, artefatti ed elementi di lavoro.

Prerequisiti

Requisito dettagli
Accesso ad Azure DevOps Membro del progetto con almeno accesso di base
Account GitHub Un account GitHub con l'autorizzazione per creare repository
Git Git installato in locale
GitHub CLI (facoltativo) GitHub CLI per operazioni semplificate

Eseguire la migrazione dei repository

Il repository GitHub supporta la collaborazione aperta con richieste pull, fork e star.

Utilizzare Importatore per GitHub Enterprise

GitHub Enterprise Importer è lo strumento consigliato per la migrazione dei repository da Azure DevOps Cloud a GitHub Enterprise Cloud. Esegue la migrazione dell'origine Git (inclusa la cronologia dei commit), pull request, cronologia utente, collegamenti agli elementi di lavoro sui pull request, allegati e criteri di ramo.

  1. Installare l'estensione di migrazione dell'interfaccia della riga di comando di GitHub:

    gh extension install github/gh-gei
    
  2. Eseguire l'autenticazione con 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. Generare uno script di migrazione per un'organizzazione Azure DevOps:

    gh gei generate-script --ado-org {organization} --github-org {github-org} --output migrate.sh
    
  4. In alternativa, eseguire la migrazione di un singolo repository:

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

Per ulteriori informazioni, vedere Comprendere le migrazioni da Azure DevOps a GitHub.

Usare l'utilità di importazione GitHub

Per un'opzione più semplice basata su browser, usare l'utilità di importazione GitHub predefinita:

  1. Accedere a GitHub e selezionare Nuovo repository.
  2. Immettere un nome del repository e impostare visibilità su Pubblico.
  3. Selezionare Importa un repository nella parte superiore della pagina.
  4. Immettere l'URL per clonare da Azure DevOps: https://dev.azure.com/{organization}/{project}/_git/{repo}.
  5. Se richiesto, immettere le credenziali di Azure DevOps. Accedere usando Microsoft Entra ID. Se è necessario usare un token di accesso personale, crearne uno con ambito lettura del codice>. Per altre informazioni, vedere Usare i token di accesso personali.
  6. Selezionare Inizia importazione.

GitHub Importer esegue la migrazione dell'origine Git e della cronologia dei commit, ma non esegue la migrazione delle pull request, dei collegamenti agli elementi di lavoro o dei criteri di branch. Per altre informazioni, vedere Importing a repository with GitHub Importer.

Importare dalla riga di comando

Se, il GitHub Enterprise Importer non soddisfa le tue esigenze, fai il push direttamente da un clone locale:

# 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

Esaminare la cronologia Git per le credenziali, le chiavi API o i dati sensibili prima di eseguire il push in un repository di GitHub pubblico. Usare strumenti come git filter-repo per rimuovere il contenuto sensibile dalla cronologia.

Eseguire la migrazione delle pipeline

GitHub Actions offre flussi di lavoro flessibili e minuti di esecuzione gratuiti per i repository pubblici.

Usare l'importatore di GitHub Actions

GitHub Actions Importer automatizza la conversione delle pipeline di Azure DevOps in flussi di lavoro GitHub Actions.

  1. Installare l'estensione dell'interfaccia della riga di comando dell'utilità di importazione GitHub Actions:

    gh extension install github/gh-actions-importer
    
  2. Eseguire un controllo per identificare le pipeline di cui eseguire la migrazione:

    gh actions-importer audit azure-devops \
      --output-dir audit-results
    
  3. Convertire una pipeline specifica:

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

Per altre informazioni, vedere Migrate da Azure DevOps a GitHub Actions con GitHub Actions Importer.

Differenze principali tra Azure Pipelines e GitHub Actions

Azure Pipelines GitHub Actions
azure-pipelines.yml .github/workflows/*.yml
Fasi, processi, passaggi Processi, passaggi (flussi di lavoro riutilizzabili per le fasi)
Connessioni al servizio GitHub segreti e OIDC
Pool di agenti Etichette del runner (ubuntu-latest, windows-latest)
Riferimenti alle attività (task@version) Riferimenti ad azioni (owner/action@version)

Eseguire la migrazione del contenuto wiki

Usare GitHub Wiki o pagine GitHub per pubblicare guide e manuali.

Eseguire la migrazione a wiki di GitHub

Le wiki di Azure DevOps sono repository Git. Clonarli ed eseguirne il push direttamente:

# 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

Prima di eseguire il push, creare almeno una pagina wiki nel repository GitHub per inizializzare il repository wiki. Selezionare la scheda Wiki nel repository GitHub e creare una pagina.

Eseguire la migrazione a pagine di GitHub

Per i progetti con un numero elevato di documentazione, GitHub Pages fornisce un sito statico completo ospitato direttamente dal repository. È possibile usare generatori di siti statici come Jekyll o MkDocs per convertire il contenuto wiki in un sito pubblicato.

Eseguire la migrazione degli artefatti

GitHub Packages supporta la pubblicazione e l'utilizzo di pacchetti NuGet, npm e Maven.

Spostare pacchetti su GitHub Packages

  1. Scaricare i pacchetti esistenti dal feed Azure Artifacts.
  2. Riconfigurare l'origine del pacchetto in modo che punti a GitHub Packages.
  3. Pubblicare pacchetti nel nuovo feed.

Ad esempio, per eseguire la migrazione di un pacchetto 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

Registri alternativi

Per i pacchetti che necessitano di una visibilità pubblica ampia, prendere in considerazione i registri pubblici:

Tipo di pacchetto Registro pubblico
NuGet nuget.org
npm npmjs.com
Maven Maven Central
Python PyPI
Carico crates.io

Eseguire la migrazione degli elementi di lavoro

GitHub Problemi e progetti forniscono strumenti moderni per la gestione di bug e richieste di funzionalità.

Non esiste uno strumento di migrazione integrato per gli elementi di lavoro da Azure Boards a GitHub Issues. Sono disponibili diverse opzioni della comunità:

  • Migratore di issue da Azure DevOps a GitHub: strumenti open source su GitHub che convertono gli elementi di lavoro in issue, conservando titoli, descrizioni ed etichette.
  • CSV export/import: esportare elementi di lavoro da Azure Boards come CSV, quindi usare l'interfaccia della riga di comando o l'API GitHub per creare problemi.
  • usare l'API REST degli Elementi di lavoro di Azure DevOps e l'API REST delle Issue di GitHub per creare uno script di migrazione personalizzato.

Esportare elementi di lavoro con l'interfaccia della riga di comando di 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

Tip

Assegnare priorità alla migrazione di elementi di lavoro attivi e recenti. Gli elementi chiusi o cronologici potrebbero non essere necessari per la migrazione. È possibile mantenerli accessibili nel progetto privato per riferimento.

Sostituire i cruscotti

GitHub non ha una singola funzionalità del dashboard equivalente a Azure DevOps dashboard. Al contrario, la funzionalità simile viene distribuita tra diverse funzionalità native.

Uso del dashboard di Azure DevOps GitHub equivalente
Monitoraggio e analisi del burn-down del lavoro GitHub Projects con grafici insights predefiniti
Attività del repository Analisi del repository (commit, pull request, traffico, collaboratori)
Stato di compilazione e integrazione continua GitHub Actions notifiche sulla cronologia di esecuzione e sullo stato del flusso di lavoro
Trasparenza pubblica Problemi, richieste pull, versioni e notifiche README

Per i dashboard a livello di organizzazione che aggregano i dati in più repository, esplorare le integrazioni nel marketplace GitHub Marketplace.

Elenco di controllo post-migrazione

Dopo la migrazione del contenuto, verificare gli elementi seguenti:

  • [ ] Tutti i repository Git sono disponibili in GitHub con cronologia completa.
  • [ ] Flussi di lavoro CI/CD eseguiti correttamente in GitHub Actions.
  • [ ] Il rendering del contenuto wiki viene eseguito correttamente in GitHub Wiki o GitHub Pages.
  • [ ] I pacchetti vengono pubblicati e ripristinati dal nuovo registro.
  • [ ] Gli elementi di lavoro attivi vengono tracciati in GitHub Issues.
  • [ ] I collegamenti esterni e i badge puntano alle nuove posizioni su GitHub.
  • [ ] I collaboratori e i membri della community sono informati della nuova posizione.
  • [ ] README nel progetto Azure DevOps indirizza i visitatori alla nuova posizione GitHub.