À propos des migrations de dépôts avec GitHub Enterprise Importer
Vous pouvez exécuter votre migration avec GitHub CLI ou l’API.
GitHub CLI simplifie le processus de migration et est recommandé pour la plupart des clients. Les clients avancés avec de grands besoins de personnalisation peuvent utiliser l’API pour créer leurs propres intégrations avec GitHub Enterprise Importer.
Pour voir les instructions d’utilisation de l’API, utilisez le sélecteur d’outils en haut de la page.
Prérequis
- Nous vous recommandons vivement d’effectuer une exécution d’essai de votre migration et d’effectuer votre migration de production peu après. Pour en savoir plus sur les exécutions d’essai, consultez « Vue d’ensemble d’une migration entre produits GitHub ».
- Assurez-vous que vous comprenez les données qui seront migrées et les limitations de prise en charge connues de l’importateur. Pour plus d’informations, consultez « Informations sur les migrations entre les produits GitHub ».
- Bien que cela ne soit pas obligatoire, nous vous recommandons d’interrompre votre travail pendant votre migration de production. Importer ne prend pas en charge les migrations delta, donc aucune modification apportée pendant la migration ne sera migrée. Si vous choisissez de ne pas interrompre le travail pendant votre migration de production, vous devrez migrer manuellement ces modifications.
- Vous devez être propriétaire d’organisation ou recevoir le rôle de migrateur pour les organisations source et de destination. Pour plus d’informations, consultez « Gestion de l'accès pour une migration entre les produits GitHub ».
- Si vous utilisez GitHub Enterprise Server 3.8 ou ultérieur, pour configurer le stockage blob pour les archives exportées, vous devez avoir accès à la Management Console.
Étape 1 : Installer l’GEI extension of the GitHub CLI
S’il s’agit de votre première migration, vous devez installer GEI extension of the GitHub CLI. Pour plus d’informations sur GitHub CLI, consultez « À propos de GitHub CLI ».
Vous pouvez également télécharger un fichier binaire autonome à partir de la page des versions du référentiel github/gh-gei
. Vous pouvez exécuter le fichier binaire directement, sans le préfixe gh
.
-
Installez GitHub CLI. Pour obtenir des instructions d’installation pour GitHub CLI, consultez le dépôt GitHub CLI.
Remarque : Vous devez avoir la version 2.4.0 ou ultérieure de GitHub CLI. Vous pouvez vérifier la version que vous avez installée avec la commande
gh --version
. -
Installez GEI extension.
Shell gh extension install github/gh-gei
gh extension install github/gh-gei
Dès que vous avez besoin d’aide sur GEI extension, vous pouvez utiliser l’indicateur --help
avec une commande. Par exemple, gh gei --help
liste toutes les commandes disponibles et gh gei migrate-repo --help
liste toutes les options disponibles pour la commande migrate-repo
.
Étape 2 : Mettre à jour l’GEI extension of the GitHub CLI
GEI extension est mis à jour toutes les semaines. Pour être sûr d’utiliser la version la plus récente, mettez à jour l’extension.
gh extension upgrade github/gh-gei
Étape 3 : Définir les variables d’environnement
Avant de pouvoir utiliser GEI extension pour migrer vers GitHub Enterprise Cloud, vous devez créer des personal access token qui peuvent accéder aux organisations source et de destination, puis définir les personal access token en tant que variables d’environnement.
-
Créez et enregistrez un personal access token qui servira d’authentification pour l’organisation de destination sur GitHub Enterprise Cloud, en vous assurant qu’il répond à toutes les exigences. Pour plus d’informations, consultez « Gestion de l'accès pour une migration entre les produits GitHub ».
-
Créez et enregistrez un personal access token qui servira d’authentification pour l’organisation source, en vous assurant qu’il répond également aux mêmes exigences.
-
Définissez les variables d’environnement pour les personal access token, en remplaçant TOKEN dans les commandes ci-dessous par les personal access token que vous avez enregistrés ci-dessus. Utilisez
GH_PAT
pour l’organisation de destination etGH_SOURCE_PAT
pour l’organisation source.-
Si vous utilisez le Terminal, utilisez la commande
export
.Shell export GH_PAT="TOKEN" export GH_SOURCE_PAT="TOKEN"
export GH_PAT="TOKEN" export GH_SOURCE_PAT="TOKEN"
-
Si vous utilisez PowerShell, utilisez la commande
$env
.Shell $env:GH_PAT="TOKEN" $env:GH_SOURCE_PAT="TOKEN"
$env:GH_PAT="TOKEN" $env:GH_SOURCE_PAT="TOKEN"
-
Étape 4 : Configurer le stockage d’objets blob
De nombreuses instances GitHub Enterprise Server se trouvant derrière des pare-feux, nous utilisons le stockage d’objets blob comme emplacement intermédiaire pour stocker les données auxquelles GitHub peut accéder.
Pour commencer, vous devez configurer le stockage d’objets blob avec un fournisseur de cloud pris en charge. Ensuite, vous devez configurer vos informations d’identification pour le fournisseur de stockage dans la Management Console ou GitHub CLI.
Configuration du stockage d’objets blob avec un fournisseur de cloud pris en charge
GitHub CLI prend en charge les fournisseurs de stockage de blobs suivants :
- Amazon Web Services (AWS) S3
- Stockage Blob Azure
Configuration d’un compartiment de stockage AWS S3
Dans AWS, configurez un compartiment S3. Pour plus d’informations, consultez Créer un compartiment dans la documentation AWS.
Vous aurez également besoin d’une clé d’accès AWS et d’une clé secrète avec les autorisations suivantes :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucketMultipartUploads",
"s3:AbortMultipartUpload",
"s3:ListBucket",
"s3:DeleteObject",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::github-migration-bucket",
"arn:aws:s3:::github-migration-bucket/*"
]
}
]
}
Remarque : GitHub Enterprise Importer ne supprime pas votre archive d’AWS une fois votre migration terminée. Pour réduire les coûts de stockage, nous vous recommandons de configurer la suppression automatique de votre archive après une certaine période. Pour plus d’informations, consultez Définition d’une configuration de cycle de vie sur un compartiment dans la documentation AWS.
Configuration d’un compte Stockage Blob Azure
Dans Azure, créez un compte de stockage et notez votre chaîne de connexion. Pour plus d’informations, consultez Gérer les clés d’accès au compte de stockage dans Microsoft Docs.
Remarque : GitHub Enterprise Importer ne supprime pas votre archive du Stockage Blob Azure une fois votre migration terminée. Pour réduire les coûts de stockage, nous vous recommandons de configurer la suppression automatique de votre archive après une certaine période. Pour plus d’informations, consultez Optimiser les coûts en gérant automatiquement le cycle de vie des données dans Microsoft Docs.
Configuration de vos informations d’identification pour le stockage d’objets blob
Après avoir configuré le stockage d’objets blob avec un fournisseur de cloud pris en charge, vous devez configurer vos informations d’identification pour le fournisseur de stockage dans GitHub :
- Si vous utilisez GitHub Enterprise Server 3.8 ou ultérieur, configurez vos informations d’identification dans la Management Console.
- Si vous utilisez GitHub Enterprise Server 3.7 ou antérieur, configurez les informations d’identification dans GitHub CLI.
Configuration du stockage d’objets blob dans la Management Console de votre instance GitHub Enterprise Server
Remarque : Vous avez seulement besoin de configurer le stockage d’objets blob dans la Management Console si vous utilisez GitHub Enterprise Server 3.8 ou ultérieur. Si vous utilisez la version 3.7 ou antérieure, configurez vos informations d’identification dans GitHub CLI à la place.
Après avoir configuré un compartiment de stockage AWS S3 ou un compte Stockage Blob Azure, configurez le stockage de blobs dans la Management Console de votre instance GitHub Enterprise Server. Pour plus d’informations sur la Management Console, consultez « Administration de votre instance à partir de la console de gestion ».
-
À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.
-
Si vous n’êtes pas déjà sur la page « Administrateur du site », dans le coin supérieur gauche, cliquez sur Administrateur du site. 1. Dans la barre latérale « Administrateur de site », cliquez sur Management Console .
-
Connectez-vous à la Management Console.
-
Dans la barre de navigation supérieure, cliquez sur Paramètres.
-
Sous Migrations, cliquez sur Activer les migrations GitHub .
-
Si vous le souhaitez, pour importer les paramètres de stockage que vous avez configurés pour GitHub Actions, sélectionnez Copier les paramètres de stockage dans Actions. Pour plus d’informations, consultez « Activation de GitHub Actions avec le Stockage Blob Azure » et « Activation de GitHub Actions avec le stockage Amazon S3 ».
Remarque : après avoir copié vos paramètres de stockage, vous devrez peut-être toujours mettre à jour la configuration de votre compte de stockage cloud pour utiliser GitHub Enterprise Importer. Vous devez notamment vous assurer que les adresses IP de GitHub figurent dans la liste d'autorisation. Pour plus d’informations, consultez « Gestion de l'accès pour une migration entre les produits GitHub ».
-
Si vous n’importez pas les paramètres de stockage à partir de GitHub Actions, sélectionnez Stockage Blob Azure ou Amazon S3 et renseignez les détails requis.
Note : Si vous utilisez Amazon S3, vous devez définir « AWS Service URL » (URL du service AWS) sur le point de terminaison standard pour la région AWS où se trouve votre compartiment. Par exemple, si votre compartiment se trouve dans la région
eu-west-1
, « AWS Service URL » (URL du service AWS) esthttps://s3.eu-west-1.amazonaws.com
. Le réseau de votre instance GitHub Enterprise Server doit autoriser l’accès à cet hôte. Les points de terminaison de passerelle ne sont pas pris en charge, tels quebucket.vpce-0e25b8cdd720f900e-argc85vg.s3.eu-west-1.vpce.amazonaws.com
. Pour plus d’informations sur les points de terminaison de passerelle, consultez Points de terminaison de passerelle pour Amazon S3 dans la documentation AWS. -
Cliquez sur Tester les paramètres de stockage.
-
Cliquez sur Enregistrer les paramètres.
Configuration de vos informations d’identification pour le stockage d’objets blob dans GitHub CLI
Remarque : Vous avez seulement besoin de configurer vos informations d’identification pour le stockage d’objets blob dans GitHub CLI si vous utilisez GitHub Enterprise Server 3.7 ou antérieur. Si vous utilisez la version 3.8 ou ultérieure, configurez plutôt le stockage d’objets blob dans la Management Console.
Si vous configurez vos informations d’identification pour le stockage d’objets blob dans GitHub CLI, vous ne pourrez pas effectuer de migrations si les exportations de votre source Git ou de vos métadonnées dépassent 2 Go. Pour mener à bien ces migrations, effectuez la mise à niveau vers GitHub Enterprise Server version 3.8 ou ultérieure.
Configuration des informations d’identification AWS S3 dans GitHub CLI
Quand vous êtes prêt à exécuter votre migration, vous devez fournir vos informations d’identification AWS à l’GitHub CLI : région, clé d’accès, clé secrète et jeton de session (si nécessaire). Vous pouvez les passer comme des arguments ou définir des variables d’environnement appelées AWS_REGION
, AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
et AWS_SESSION_TOKEN
.
Vous devez également passer le nom du compartiment S3 en utilisant l’argument --aws-bucket-name
.
Configuration des informations d’identification du compte Stockage Blob Azure dans GitHub CLI
Lorsque vous êtes prêt à exécuter votre migration, vous pouvez passer votre chaîne de connexion à GitHub CLI en tant qu’argument, ou la passer en utilisant une variable d’environnement appelée AZURE_STORAGE_CONNECTION_STRING
.
Étape 5 : Générer un script de migration
Si vous souhaitez migrer simultanément plusieurs dépôts vers GitHub Enterprise Cloud, utilisez GitHub CLI pour générer un script de migration. Le script résultant contiendra une liste de commandes de migration, une par dépôt.
Remarque : La génération d’un script génère un script PowerShell. Si vous utilisez le Terminal, vous devez générer le script avec l’extension de fichier .ps1
et installer PowerShell pour Mac ou Linux pour l’exécuter.
Si vous souhaitez migrer un seul dépôt, passez à l’étape suivante.
Génération d’un script de migration
Vous devez suivre cette étape à partir d’un ordinateur qui peut accéder à l’API pour votre instance GitHub Enterprise Server. Si vous pouvez accéder à votre instance à partir du navigateur, l’ordinateur dispose de l’accès approprié.
Pour générer un script de migration, exécutez la commande gh gei generate-script
.
Pour GitHub Enterprise Server 3.8 ou version ultérieure, ou si vous utilisez la version 3.7 ou une version antérieure avec le Stockage Blob Azure, utilisez les indicateurs suivants :
gh gei generate-script --github-source-org SOURCE \ --github-target-org DESTINATION \ --output FILENAME \ --ghes-api-url GHES-API-URL
gh gei generate-script --github-source-org SOURCE \
--github-target-org DESTINATION \
--output FILENAME \
--ghes-api-url GHES-API-URL
Si vous utilisez GitHub Enterprise Server 3.7 ou une version antérieure avec AWS S3, utilisez les indicateurs suivants :
gh gei generate-script --github-source-org SOURCE \ --github-target-org DESTINATION \ --output FILENAME \ --ghes-api-url GHES-API-URL \ --aws-bucket-name AWS-BUCKET-NAME
gh gei generate-script --github-source-org SOURCE \
--github-target-org DESTINATION \
--output FILENAME \
--ghes-api-url GHES-API-URL \
--aws-bucket-name AWS-BUCKET-NAME
Si votre instance GitHub Enterprise Server utilise un certificat SSL auto-signé ou non valide, utilisez l’indicateur --no-ssl-verify
. Avec cet indicateur, GitHub CLI ignore la vérification du certificat SSL lors de l’extraction des données de votre instance uniquement. Tous les autres appels vérifient SSL.
Si vous souhaitez que le script télécharge le journal de migration pour chaque dépôt migré, ajoutez l’indicateur --download-migration-logs
. Pour plus d’informations sur les journaux de migration, consultez « Accès à vos journaux de migration pour GitHub Enterprise Importer ».
Remplacez les espaces réservés dans la commande ci-dessus par les valeurs suivantes.
Espace réservé | Valeur |
---|---|
SOURCE | Nom de l’organisation source |
DESTINATION | Nom de l’organisation de destination |
FILENAME | Nom de fichier du script de migration résultant Si vous utilisez le Terminal, choisissez une extension de fichier .ps1 , car le script généré exige l’exécution de PowerShell. Vous pouvez installer PowerShell pour Mac ou Linux. |
GHES-API-URL | URL pour l’API de votre instance GitHub Enterprise Server, par exemple https:/ |
AWS-BUCKET-NAME | Nom de compartiment pour votre compartiment AWS S3 |
Examen du script de migration
Après avoir généré le script, passez en revue le fichier et, éventuellement, modifiez le script.
- S’il y a des dépôts que vous ne souhaitez pas migrer, supprimez ou commentez les lignes correspondantes.
- Si vous souhaitez que les dépôts aient un nom différent dans l’organisation de destination, mettez à jour la valeur de l’indicateur
--target-repo
correspondant.
Remarque : Si votre dépôt contient plus de 10 Go de données de mise en production, les mises en production ne peuvent pas être migrées. Utilisez l’indicateur --skip-releases
pour migrer le dépôt sans les mises en production.
Si vous avez téléchargé GEI en tant que fichier binaire autonome plutôt qu’en tant qu’extension pour GitHub CLI, vous devrez mettre à jour votre script généré pour exécuter le fichier binaire au lieu de gh gei
.
Étape 6 : Migrer des dépôts
Vous pouvez migrer plusieurs dépôts à l’aide d’un script de migration ou un seul dépôt avec la commande gh gei migrate-repo
.
Quand vous migrez des dépôts, l’GEI extension of the GitHub CLI effectue les étapes suivantes :
- Se connecte à votre instance GitHub Enterprise Server et génère deux archives de migration par dépôt, une pour la source Git et une pour les métadonnées
- Charge les archives de migration sur le fournisseur de stockage d’objets blob de votre choix
- Démarre votre migration dans GitHub Enterprise Cloud à l’aide des URL des archives stockées avec votre fournisseur de stockage blob
- Supprime l’archive de migration de votre ordinateur local
Migrer plusieurs dépôts
Si vous effectuez une migration à partir de GitHub Enterprise Server 3.7 ou version antérieure, avant d’exécuter votre script, vous devez définir des variables d’environnement supplémentaires pour vous authentifier sur votre fournisseur de stockage blob.
-
Pour Stockage Blob Azure, définissez
AZURE_STORAGE_CONNECTION_STRING
avec la chaîne de connexion de votre compte de stockage Azure.Seules les chaînes de connexion utilisant des clés d’accès au compte de stockage sont prises en charge. Les chaînes de connexion qui utilisent des signatures d’accès partagé (SAS) ne sont pas prises en charge. Pour plus d’informations sur les clés d’accès au compte de stockage, consultez Gérer les clés d’accès au compte de stockage dans la documentation Azure.
-
Pour AWS S3, définissez les variables d’environnement suivantes.
AWS_ACCESS_KEY
: clé d’accès de votre compartimentAWS_SECRET_KEY
: clé secrète de votre compartimentAWS_REGION
: région AWS où se trouve votre compartimentAWS_SESSION_TOKEN
: jeton de session, si vous utilisez des informations d’identification AWS temporaires (consultez Utilisation d’informations d’identification temporaires avec des ressources AWS dans la documentation AWS)
Pour migrer plusieurs dépôts, exécutez le script que vous avez généré ci-dessus. Remplacez FILENAME dans les commandes ci-dessous par le nom de fichier que vous avez fourni lors de la génération du script.
-
Si vous employez le Terminal, utilisez
./
.Shell ./FILENAME
./FILENAME
-
Si vous employez PowerShell, utilisez
.\
.Shell .\FILENAME
.\FILENAME
Migrer un seul dépôt
Vous devez suivre cette étape à partir d’un ordinateur qui peut accéder à l’API pour votre instance GitHub Enterprise Server. Si vous pouvez accéder à votre instance à partir du navigateur, l’ordinateur dispose de l’accès approprié.
Pour migrer un seul dépôt, utilisez la commande gh gei migrate-repo
.
Si vous utilisez GitHub Enterprise Server 3.8 ou version ultérieure, utilisez les indicateurs suivants :
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME --ghes-api-url GHES-API-URL
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME --ghes-api-url GHES-API-URL
Si vous effectuez une migration à partir de GitHub Enterprise Server 3.7 ou version antérieure et que vous utilisez le Stockage Blob Azure comme fournisseur de stockage blob, utilisez les indicateurs suivants pour vous authentifier :
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \ --ghes-api-url GHES-API-URL --azure-storage-connection-string "AZURE_STORAGE_CONNECTION_STRING"
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \
--ghes-api-url GHES-API-URL --azure-storage-connection-string "AZURE_STORAGE_CONNECTION_STRING"
Si vous effectuez une migration à partir de GitHub Enterprise Server 3.7 ou version antérieure et que vous utilisez Amazon S3 comme fournisseur de stockage blob, utilisez les indicateurs suivants pour vous authentifier :
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \ --ghes-api-url GHES-API-URL --aws-bucket-name "AWS-BUCKET-NAME"
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \
--ghes-api-url GHES-API-URL --aws-bucket-name "AWS-BUCKET-NAME"
Si votre instance GitHub Enterprise Server utilise un certificat SSL auto-signé ou non valide, utilisez l’indicateur --no-ssl-verify
. Avec cet indicateur, GitHub CLI ignore la vérification du certificat SSL lors de l’extraction des données de votre instance uniquement. Tous les autres appels vérifient SSL.
Remarque : Si votre dépôt contient plus de 10 Go de données de mise en production, les mises en production ne peuvent pas être migrées. Utilisez l’indicateur --skip-releases
pour migrer le dépôt sans les mises en production.
Remplacez les espaces réservés dans la commande ci-dessus par les valeurs suivantes.
Espace réservé | Valeur |
---|---|
SOURCE | Nom de l’organisation source |
CURRENT-NAME | Nom du dépôt que vous souhaitez migrer |
DESTINATION | Nom de l’organisation de destination |
NEW-NAME | Nom que vous souhaitez donner au dépôt migré |
GHES-API-URL | URL pour l’API de votre instance GitHub Enterprise Server, par exemple https:/ |
AZURE_STORAGE_CONNECTION_STRING | Chaîne de connexion pour votre compte de stockage Azure. Veillez à mettre entre guillemets la chaîne de connexion, qui contient des caractères qui sinon seraient probablement interprétés par l’interpréteur de commandes. |
AWS-BUCKET-NAME | Nom de compartiment pour votre compartiment AWS S3 |
Si vous souhaitez annuler une migration, utilisez la commande abort-migration
, en remplaçant MIGRATION-ID par l'ID retourné par migrate-repo
.
gh gei abort-migration --migration-id MIGRATION-ID
gh gei abort-migration --migration-id MIGRATION-ID
Étape 7 : Valider votre migration et consulter le journal des erreurs
Une fois votre migration terminée, nous vous recommandons d’examiner votre journal de migration. Pour plus d’informations, consultez « Accès à vos journaux de migration pour GitHub Enterprise Importer ».
Nous vous recommandons de passer en revue vos dépôts migrés pour en contrôler l’intégrité.
Une fois votre migration terminée, nous vous recommandons de supprimer les archives de votre conteneur de stockage. Si vous prévoyez d’effectuer d’autres migrations, supprimez l’archive placée dans votre conteneur de stockage par l’ADO2GH extension. Si vous avez terminé la migration, vous pouvez supprimer l’intégralité du conteneur.