Migrer d’un projet public vers GitHub

Azure DevOps Services

Important

Les projets publics dans Azure DevOps sont mis hors service. À compter de 2027, les projets publics existants sont convertis en projets privés. Pour plus d’informations, consultez Public projects retirement et Migrate d’un projet public à GitHub.

Cet article explique comment migrer chaque zone de service d’un projet public Azure DevOps vers son équivalent GitHub. Il couvre les dépôts, les pipelines, les wikis, les artefacts et les éléments de travail.

Prerequisites

Condition requise Détails
accès Azure DevOps Membre du projet avec au moins un accès de base
compte GitHub Un compte GitHub avec l’autorisation de créer des référentiels
Git Git installé localement
GitHub CLI (facultatif) GitHub CLI pour les opérations simplifiées

Migrer des dépôts

Les référentiels GitHub prennent en charge la collaboration ouverte avec les pull requests, les forks et les étoiles.

Utiliser GitHub Enterprise Importer

GitHub Enterprise Importer est l’outil recommandé pour migrer des dépôts de Azure DevOps Cloud vers GitHub Enterprise Cloud. Il migre la source Git (y compris l’historique des validations), les demandes d’extraction, l’historique utilisateur, les liens d’élément de travail sur les demandes d’extraction, les pièces jointes et les stratégies de branche.

  1. Installez l’extension de migration GitHub CLI :

    gh extension install github/gh-gei
    
  2. Authentifiez-vous avec Azure DevOps et 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. Générez un script de migration pour une organisation Azure DevOps :

    gh gei generate-script --ado-org {organization} --github-org {github-org} --output migrate.sh
    
  4. Vous pouvez également migrer un dépôt unique :

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

Pour plus d’informations, consultez Migrations de Azure DevOps vers GitHub.

Utiliser GitHub Importer

Pour une option plus simple basée sur un navigateur, utilisez l’importateur intégré GitHub :

  1. Connectez-vous à GitHub et sélectionnez New repository.
  2. Entrez un nom de référentiel et définissez la visibilité sur Public.
  3. Sélectionnez Importer un référentiel en haut de la page.
  4. Entrez votre URL de clone Azure DevOps : https://dev.azure.com/{organization}/{project}/_git/{repo}.
  5. Si vous y êtes invité, entrez vos informations d’identification Azure DevOps. Connectez-vous à l’aide de Microsoft Entra ID. Si vous devez utiliser un jeton d’accès personnel, créez-en un avec l’étendue Lecture du code>. Pour plus d’informations, consultez Utiliser les jetons d’accès personnels.
  6. Sélectionnez Commencer l’importation.

GitHub Importer migre les sources et l'historique des commits Git, mais ne migre pas les pull requests, les liens d'élément de travail ou les règles de branche. Pour plus d’informations, consultez Importing a repository with GitHub Importer.

Importer à partir de la ligne de commande

Si GitHub Enterprise Importer ne répond pas à vos besoins, envoyez (push) directement à partir d'un 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

Important

Passez en revue votre historique Git pour connaître les informations d’identification, les clés API ou les données sensibles avant d’envoyer (push) vers un référentiel de GitHub public. Utilisez des outils comme git filter-repo pour supprimer le contenu sensible de l’historique.

Migrer des pipelines

GitHub Actions offre des flux de travail flexibles et des minutes d’exécution gratuites pour les dépôts publics.

Utiliser GitHub Actions Importer

GitHub Actions Importer automatise la conversion de pipelines Azure DevOps en flux de travail GitHub Actions.

  1. Installez l’extension CLI GitHub Actions Importer :

    gh extension install github/gh-actions-importer
    
  2. Exécutez un audit pour identifier les pipelines à migrer :

    gh actions-importer audit azure-devops \
      --output-dir audit-results
    
  3. Convertir un pipeline spécifique :

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

Pour plus d’informations, consultez Migrate de Azure DevOps à GitHub Actions avec GitHub Actions Importer.

Principales différences entre Azure Pipelines et GitHub Actions

Azure Pipelines GitHub Actions
azure-pipelines.yml .github/workflows/*.yml
Étapes, tâches, phases Travaux, étapes (flux de travail réutilisables pour les phases)
Connexions de service GitHub secrets et OIDC
Pools d’agents Étiquettes de l'exécuteur (ubuntu-latest, windows-latest)
Références de tâche (task@version) Références d’action (owner/action@version)

Migrer du contenu wiki

Utilisez GitHub Wiki ou GitHub Pages pour publier des guides et des manuels.

Migrer vers GitHub Wiki

Azure DevOps wikis sont des référentiels Git. Clonez et envoyez-les directement :

# 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

Avant d’envoyer (push), créez au moins une page wiki dans votre dépôt GitHub pour initialiser le référentiel wiki. Sélectionnez l’onglet Wiki dans votre dépôt GitHub et créez une page.

Migrer vers des pages GitHub

Pour les projets volumineux de documentation, GitHub Pages fournit un site statique complet hébergé directement à partir de votre référentiel. Vous pouvez utiliser des générateurs de sites statiques comme Jekyll ou MkDocs pour convertir votre contenu wiki en un site publié.

Migrer des artéfacts

GitHub Packages prend en charge la publication et la consommation de packages NuGet, npm et Maven.

Déplacer des packages vers des packages GitHub

  1. Téléchargez des packages existants à partir de votre flux de Azure Artifacts.
  2. Reconfigurez votre source de package pour qu’elle pointe vers GitHub Packages.
  3. Publiez des packages dans le nouveau flux.

Par exemple, pour migrer un package 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

Autres registres

Pour les packages qui ont besoin d’une grande visibilité publique, tenez compte des registres publics :

Type de package Registre public
NuGet nuget.org
npm npmjs.com
Maven Maven Central
Python PyPI
Cargo crates.io

Migrer des éléments de travail

GitHub Problèmes et projets fournissent des outils modernes pour gérer les bogues et les demandes de fonctionnalités.

Il n'existe aucun outil de migration intégré pour les éléments de travail d'Azure Boards vers GitHub Issues. Plusieurs options de communauté sont disponibles :

  • Outil de migration Azure DevOps vers GitHub Issues : outils open source sur GitHub qui convertissent les éléments de travail en tickets, en préservant les titres, les descriptions et les étiquettes.
  • CSV export/import : exportez des éléments de travail à partir de Azure Boards en tant que csv, puis utilisez l’interface CLI ou l’API GitHub pour créer des problèmes.
  • REST API scripting — utilisez l'API REST pour les éléments de travail Azure DevOps et l'API REST pour les problèmes GitHub afin de créer un script de migration personnalisé.

Exporter des éléments de travail avec l’interface CLI 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

Hiérarchiser la migration des éléments de travail actifs et récents. Les éléments fermés ou historiques n’ont peut-être pas besoin d’une migration. Vous pouvez les conserver accessibles dans le projet privé pour référence.

Remplacer les tableaux de bord

GitHub ne dispose pas d'une fonctionnalité de tableau de bord unique équivalente aux tableaux de bord d'Azure DevOps. Au lieu de cela, les fonctionnalités similaires sont réparties sur plusieurs fonctionnalités natives.

utilisation du tableau de bord Azure DevOps équivalent GitHub
Suivi du travail et graphique d’avancement GitHub Projects avec des graphiques Insights intégrés
Activité du référentiel Repository Insights (validations, demandes de tirage, trafic, contributeurs)
État de la construction et de l’intégration continue GitHub Actions historique des exécutions de flux de travail et badges d’état
Transparence publique Problèmes, requêtes de tirage, versions et badges README

Pour les tableaux de bord au niveau de l’organisation qui agrègent des données entre plusieurs référentiels, explorez les intégrations sur la place de marché GitHub.

Liste de contrôle post-migration

Après avoir migré votre contenu, vérifiez les éléments suivants :

  • [ ] Tous les référentiels Git sont disponibles sur GitHub avec l’historique complet.
  • [ ] Les flux de travail CI/CD s’exécutent correctement dans GitHub Actions.
  • [ ] Le contenu wiki s’affiche correctement dans GitHub Wiki ou GitHub Pages.
  • [ ] Les paquets sont publiés et restaurés depuis le nouveau registre.
  • [ ] Les éléments de travail actifs sont gérés par GitHub Issues.
  • [ ] Liens externes et badges pointent vers les nouveaux emplacements GitHub.
  • [ ] Les collaborateurs et les membres de la communauté sont informés du nouvel emplacement.
  • [ ] README dans le projet Azure DevOps dirige les visiteurs vers le nouvel emplacement GitHub.