Migrera från ett offentligt projekt till GitHub

Azure DevOps-tjänster

Important

Offentliga projekt i Azure DevOps dras tillbaka. Från och med 2027 konverteras befintliga offentliga projekt till privata. Mer information finns i Public projects retirement and Migrera från ett offentligt projekt till GitHub.

Den här artikeln visar hur du migrerar varje tjänstområde från ett Azure DevOps offentligt projekt till dess GitHub motsvarighet. Den omfattar repositoryn, pipelines, wikisidor, artefakter och arbetsobjekt.

Förutsättningar

Krav Detaljer
Azure DevOps åtkomst Medlem i projektet med minst grundläggande åtkomst
GitHub-konto Ett GitHub konto med behörighet att skapa lagringsplatser
Git Git installerat lokalt
GitHub CLI (valfritt) GitHub CLI för effektiva åtgärder

Migrera lagringsplatser

GitHub lagringsplatser stöder öppet samarbete med pull-begäranden, förgreningar och stjärnor.

Använda GitHub Enterprise Importer

GitHub Enterprise Importer är det rekommenderade verktyget för att migrera lagringsplatser från Azure DevOps Cloud till GitHub Enterprise Cloud. Den migrerar Git-källkod (inklusive commit-historik), pull-begäranden, användarhistorik, arbetsobjektlänkar på pull-begäranden, bifogade filer och grenprinciper.

  1. Installera GitHub CLI-migreringstillägget:

    gh extension install github/gh-gei
    
  2. Autentisera med både Azure DevOps och 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. Generera ett migreringsskript för en Azure DevOps organisation:

    gh gei generate-script --ado-org {organization} --github-org {github-org} --output migrate.sh
    
  4. Eller migrera en enskild lagringsplats:

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

Mer information finns i Förstå migreringar från Azure DevOps till GitHub.

Använda GitHub Importer

Om du vill ha ett enklare webbläsarbaserat alternativ använder du den inbyggda GitHub Importer:

  1. Logga in på GitHub och välj Ny lagringsplats.
  2. Ange ett lagringsplatsnamn och ange synlighet till Offentlig.
  3. Välj Importera en lagringsplats överst på sidan.
  4. Ange din Azure DevOps-klonings-URL: https://dev.azure.com/{organization}/{project}/_git/{repo}.
  5. Ange dina Azure DevOps autentiseringsuppgifter om du uppmanas att göra det. Logga in med hjälp av Microsoft Entra ID. Om du behöver använda en personlig åtkomsttoken skapar du en med kodläsningsomfång>. Mer information finns i Använda personliga åtkomsttoken.
  6. Välj Börja importera.

GitHub Importer migrerar Git-källor och kommitteringshistorik men migrerar inte pull-förfrågningar, arbetsobjektlänkar eller grenpolicys. Mer information finns i Importera en lagringsplats med GitHub Importer.

Importera från kommandoraden

Om GitHub Enterprise Importer inte uppfyller dina behov skickar du direkt från en lokal klon:

# 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

Important

Granska Din Git-historik för autentiseringsuppgifter, API-nycklar eller känsliga data innan du skickar till en offentlig GitHub lagringsplats. Använd verktyg som git filter-repo för att ta bort känsligt innehåll från historiken.

Migrera datapipelines

GitHub Actions erbjuder flexibla arbetsflöden och kostnadsfria löparminuter för offentliga lagringsplatser.

Använd GitHub Actions Importer

GitHub Actions Importer automatiserar konverteringen av Azure-pipelines till GitHub Actions arbetsflöden.

  1. Installera CLI-tillägget GitHub Actions Importer:

    gh extension install github/gh-actions-importer
    
  2. Kör en granskning för att identifiera pipelines som ska migreras:

    gh actions-importer audit azure-devops \
      --output-dir audit-results
    
  3. Konvertera en specifik pipeline:

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

Mer information finns i Migrera från Azure DevOps till GitHub Actions med GitHub Actions Importer.

Viktiga skillnader mellan Azure-pipelines och GitHub Actions

Azure-pipelines GitHub Actions
azure-pipelines.yml .github/workflows/*.yml
Faser, jobb, steg Jobb, steg (återanvändbara arbetsflöden för faser)
Tjänstanslutningar GitHub hemligheter och OIDC
Agentpooler Löparetiketter (ubuntu-latest, windows-latest)
Uppgiftsreferenser (task@version) Åtgärdsreferenser (owner/action@version)

Migrera wiki-innehåll

Använd GitHub Wiki eller GitHub Pages för att publicera guider och handböcker.

Migrera till GitHub Wiki

Azure DevOps wikis är Git-lagringsplatser. Klona och push-överför dem direkt:

# 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

Innan du push-överför skapar du minst en wiki-sida på din GitHub lagringsplats för att initiera wiki-lagringsplatsen. Välj fliken Wiki i din GitHub lagringsplats och skapa en sida.

Migrera till GitHub sidor

För dokumentationsintensiva projekt tillhandahåller GitHub Pages en fullständig statisk webbplats som finns direkt från lagringsplatsen. Du kan använda statiska webbplatsgeneratorer som Jekyll eller MkDocs för att konvertera ditt wiki-innehåll till en publicerad webbplats.

Migrera artefakter

GitHub Packages stöder publicering och användning av NuGet-, npm- och Maven-paket.

Flytta paket till GitHub-paket

  1. Ladda ned befintliga paket från din Azure Artifacts feed.
  2. Konfigurera om paketkällan så att den pekar på GitHub-paket.
  3. Publicera paket till den nya feeden.

Om du till exempel vill migrera ett npm-paket:

# 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

Alternativa register

För paket som behöver bred offentlig synlighet bör du överväga offentliga register:

Pakettyp Offentligt register
NuGet (på engelska) nuget.org
npm npmjs.com
Maven Maven Central
Python PyPI
Godstransport crates.io

Migrera arbetsobjekt

GitHub Problem och projekt tillhandahåller moderna verktyg för att hantera buggar och funktionsbegäranden.

Det finns inget inbyggt migreringsverktyg för arbetsobjekt från Azure-tavlor till GitHub Problem. Det finns flera tillgängliga alternativ för gemenskap.

  • Azure DevOps till GitHub Issues migrator – verktyg med öppen källkod på GitHub som konverterar arbetsobjekt till problem, bevarar rubriker, beskrivningar och etiketter.
  • CSV export/import – exportera arbetsobjekt från Azure-tavlor som CSV och använd sedan GitHub CLI eller API för att skapa problem.
  • REST API-skript – använd REST API:et Azure DevOps Work Items och GitHub Issues REST API för att skapa ett anpassat migreringsskript.

Exportera arbetsobjekt med Azure DevOps CLI

# 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

Tips/Råd

Prioritera migrering av aktiva och senaste arbetsobjekt. Stängda eller historiska objekt kanske inte behöver migrering – du kan hålla dem tillgängliga i det privata projektet som referens.

Ersätt instrumentpaneler

GitHub har inte en enda instrumentpanelsfunktion som motsvarar Azure DevOps instrumentpaneler. I stället sprids liknande funktioner över flera inbyggda funktioner.

Azure DevOps instrumentpanelsanvändning GitHub motsvarande
Arbetsövervakning och nedräkning GitHub Projects med inbyggda Insights-diagram
Databasaktivitet Repository Insights (åtaganden, PR, trafik, deltagare)
Build- och CI-status GitHub Actions arbetsflödeskörningshistorik och statusmärken
Offentlig transparens Problem, pull-begäranden, versioner och README-märken

För instrumentpaneler på organisationsnivå som aggregerar data över flera lagringsplatser kan du utforska integreringar på GitHub Marketplace.

Checklista efter migrering

När du har migrerat ditt innehåll kontrollerar du följande:

  • [ ] Alla Git-lagringsplatser är tillgängliga på GitHub med fullständig historik.
  • [ ] CI/CD-arbetsflöden körs i GitHub Actions.
  • [ ] Wiki-innehåll återges korrekt i GitHub Wiki- eller GitHub Pages.
  • [ ] Paket publiceras och återställs från det nya registret.
  • [ ] Aktiva arbetsobjekt spåras i GitHub Issues.
  • [ ] Externa länkar och märken pekar på de nya GitHub platserna.
  • [ ] Medarbetare och communitymedlemmar informeras om den nya platsen.
  • [ ] README i projektet Azure DevOps dirigerar besökare till den nya GitHub platsen.