Skip to main content

Migration de dépôts de GitHub Enterprise Server vers GitHub Enterprise Cloud

Vous pouvez migrer des dépôts de GitHub Enterprise Server vers GitHub Enterprise Cloud en utilisant GitHub CLI ou l’API.

Tool navigation

À 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.

Si vous choisissez d’utiliser l’API, vous devrez écrire vos propres scripts ou utiliser un client HTTP comme Insomnia. Vous pouvez en savoir plus sur les premiers pas avec les API de GitHub dans Prise en main de l’API REST et Formation d’appels avec GraphQL.

Pour migrer vos dépôts de GitHub Enterprise Server vers GitHub Enterprise Cloud avec les API, vous devez :

  1. Créer un personal access token pour les organisations source et de destination
  2. Récupérer le ownerId de l’organisation de destination sur GitHub Enterprise Cloud
  3. Configurez une source de migration via l'API GraphQL de GitHub afin d'identifier l'origine de votre migration
  4. Pour chaque dépôt que vous souhaitez migrer, répétez ces étapes.
    • Utiliser l’API REST sur votre instance GitHub Enterprise Server pour générer des archives de migration pour votre dépôt
    • Chargez vos archives de migration vers un emplacement où elles pourront être accessibles par GitHub
    • Démarrez votre migration à l'aide de l'API GraphQL pour votre destination de migration, en transmettant les URL de vos archives
    • Vérifier l’état de votre migration via l’API GraphQL
    • Valider votre migration et consulter le journal des erreurs

Pour voir les instructions d’utilisation de l’API, utilisez le sélecteur d’outils en haut de la page.

Pour voir les instructions d’utilisation de GitHub CLI, utilisez le sélecteur d’outils en haut de la page.

Si l’organisation de destination ou l’entreprise a des ensembles de règles activés, l’historique du référentiel migré peut violer ces règles. Pour autoriser la migration sans désactiver vos ensembles de règles, ajoutez « Migrations de référentiels » à la liste de contournement pour chaque ensemble de règles applicable. Ce contournement s’applique uniquement pendant la migration. Une fois terminés, les ensembles de règles seront appliqués à toutes les nouvelles contributions.

Pour configurer le contournement :

  1. Accédez à chaque ensemble de règles d’entreprise ou d’organisation.
  2. Dans la section « Liste de contournement », cliquez sur Ajouter un contournement.
  3. Sélectionnez Migrations de référentiels.

Pour plus d’informations, consultez « Création d'ensembles de règles pour les dépôts de votre organisation ».

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, veuillez consulter la section 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.
  • Dans les organisations source et de destination, vous devez être soit propriétaire de l'organisation, soit vous voir accorder le rôle de migrateur. Pour plus d’informations, consultez « Gestion de l’accès pour une migration entre des produits GitHub ».
  • Si vous utilisez GitHub Enterprise Server 3.8 ou une version ultérieure, pour configurer le stockage d'objets blob pour les archives exportées, vous avez besoin d'un accès à Management Console.

Étape 1. Créer votre personal access token

  1. Créez et enregistrez un personal access token (classic) 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 des produits GitHub ».
  2. 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.

Étape 2 : Obtenir le ownerId pour l’organisation de destination

En tant que propriétaire de l’organisation dans GitHub Enterprise Cloud, utilisez la requête GetOrgInfo pour retourner l’ownerId, également appelé ID d’organisation, pour l’organisation dont vous souhaitez posséder les dépôts migrés. Vous aurez besoin de l’ownerId pour identifier votre destination de migration.

Requête GetOrgInfo

query(
  $login: String!
){
  organization (login: $login)
  {
    login
    id
    name
    databaseId
  }
}
Variable de requêteDescription
loginNom de votre organisation.

Réponse GetOrgInfo

{
  "data": {
    "organization": {
      "login": "Octo",
      "id": "MDEyOk9yZ2FuaXphdGlvbjU2MTA=",
      "name": "Octo-org",
      "databaseId": 5610
    }
  }
}

Dans cet exemple, MDEyOk9yZ2FuaXphdGlvbjU2MTA= est l’ID d’organisation ou le ownerId, que nous utiliserons à l’étape suivante.

Étape 3 : Configurer le stockage d’objets blob

Lorsque vous effectuez une migration de référentiel, vous devez stocker vos données de référentiel dans un emplacement auquel GitHub Enterprise Importer peut accéder. Vous pouvez procéder comme suit :

  • Utiliser le stockage local sur l'instance GHES (GHES 3.16 et les versions ultérieures)
  • Utiliser un fournisseur de stockage d'objets blob

Utiliser le stockage local (GHES 3.16+)

Lorsque vous exécutez une migration avec un stockage local, les données d’archivage sont écrites sur le disque sur votre instance GitHub Enterprise Server, sans nécessiter un fournisseur de stockage cloud.

  • Si vous ne disposez pas de règles de pare-feu bloquant le trafic sortant de GitHub Enterprise Server, GitHub Enterprise Importer peut automatiquement récupérer l’archive stockée à partir de GitHub Enterprise Server.
  • Si vous avez mis en place des règles de pare-feu et que vous ne souhaitez pas autoriser l’accès à GitHub Enterprise Importer, vous pouvez télécharger vos données d’archive vers GitHub-owned blob storage afin que GitHub Enterprise Importer puisse y accéder. Pour le faire manuellement, consultez Téléchargement de vos archives de migration sur le stockage blob détenu par GitHub dans la version API de cet article.
  1. À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.
  2. Dans la barre latérale « Site admin », cliquez sur Management Console.
  3. Connectez-vous à la Management Console.
  4. Dans la barre latérale gauche, cliquez sur Migrations.
  5. Cliquez sur Activer les migrations GitHub.
  6. Sous « Stockage des migrations », cliquez sur Stockage local.
  7. Cliquez sur Enregistrer les paramètres.

Lorsque vous effectuez la migration, surveillez l’espace disque sur GitHub Enterprise Server. Les archives de migration sont automatiquement supprimés après 7 jours. Pour libérer de l’espace, vous pouvez supprimer une archive à l’aide de l' Points de terminaison d’API REST pour les migrations d’organisation.

Utiliser un fournisseur de stockage d'objets blob

Si votre instance GitHub Enterprise Server se trouve derrière un pare-feu, vous devrez peut-être configurer un stockage d'objets blob avec un service cloud externe.

Vous devez d'abord configurer le stockage d'objets blob avec un fournisseur pris en charge. Ensuite, si vous utilisez un fournisseur cloud, vous devez configurer vos informations d'identification pour le fournisseur de stockage dans Management Console ou GitHub CLI.

GitHub CLI prend en charge les fournisseurs de stockage de blobs suivants :

  • Amazon Web Services (AWS) S3
  • Stockage Blob Azure

Remarque

Vous devez uniquement configurer le stockage d'objets blob si vous utilisez GitHub Enterprise Server version 3.8 ou une version ultérieure. Si vous utilisez GitHub Enterprise Server version 3.7 ou une version antérieure, passez à Étape 4 : configurer une source de migration dans GitHub Enterprise Cloud.

Le stockage d’objets blob est nécessaire pour migrer des dépôts avec une source Git ou des métadonnées volumineuses. Si vous utilisez GitHub Enterprise Server version 3.7 ou antérieure, vous ne pourrez pas effectuer de migrations si vos exportations de source Git ou de métadonnées dépassent 2 Go. Pour mener à bien ces migrations, effectuez la mise à jour vers GitHub Enterprise Server version 3.8 ou ultérieure.

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 du stockage d’objets blob dans la Management Console de votre instance GitHub Enterprise Server

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 ».

  1. À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.

  2. 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 « Site admin », cliquez sur Management Console.

  3. Connectez-vous à la Management Console.

  4. Dans la barre de navigation supérieure, cliquez sur Paramètres.

  5. Sous Migrations, cliquez sur Activer les migrations GitHub .

  6. 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, il se peut que vous deviez encore mettre à jour la configuration de votre compte de stockage en nuage pour qu'il fonctionne avec 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 des produits GitHub ».

  7. 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.

    Remarque

    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) est https://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 que bucket.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.

  8. Cliquez sur Tester les paramètres de stockage.

  9. Cliquez sur Enregistrer les paramètres.

Autoriser l'accès au réseau

Si vous avez configuré des règles de pare-feu sur votre compte de stockage, assurez-vous d'avoir autorisé l'accès aux plages d'adresses IP de votre destination de migration. Consultez Gestion de l’accès pour une migration entre des produits GitHub.

Étape 4 : Configurer une source de migration dans GitHub Enterprise Cloud

La source de votre migration est votre organisation sur GitHub Enterprise Server.

Mutation createMigrationSource

mutation createMigrationSource($name: String!, $url: String!, $ownerId: ID!) {
  createMigrationSource(input: {name: $name, url: $url, ownerId: $ownerId, type: GITHUB_ARCHIVE}) {
    migrationSource {
      id
      name
      url
      type
    }
  }
}

Remarque

Veillez à utiliser GITHUB_ARCHIVE pour type.

Variable de requêteDescription
nameNom pour votre source de migration. Ce nom est juste pour vous, donc vous pouvez utiliser n’importe quelle chaîne.
ownerIdID d’organisation de votre organisation sur GitHub Enterprise Cloud.
urlURL de votre instance GitHub Enterprise Server. Cette URL n’a pas besoin d’être accessible à partir de GitHub Enterprise Cloud.

Réponse createMigrationSource

{
  "data": {
    "createMigrationSource": {
      "migrationSource": {
        "id": "MS_kgDaACRjZTY5NGQ1OC1mNDkyLTQ2NjgtOGE1NS00MGUxYTdlZmQwNWQ",
        "name": "GHES Source",
        "url": "https://my-ghes-hostname.com",
        "type": "GITHUB_ARCHIVE"
      }
    }
  }
}

Dans cet exemple, MS_kgDaACRjZTY5NGQ1OC1mNDkyLTQ2NjgtOGE1NS00MGUxYTdlZmQwNWQ est l’ID de la source de la migration. Nous l’utiliserons dans une étape ultérieure.

Étape 5 : Générer des archives de migration sur votre instance GitHub Enterprise Server

Vous allez utiliser l’API REST pour démarrer deux « migrations » dans GitHub Enterprise Server : une pour générer une archive de la source Git de votre dépôt et une pour générer une archive des métadonnées (comme les problèmes et les demandes de tirage) de votre dépôt.

Pour générer l’archive de la source Git, envoyez une demande POST à https://HOSTNAME/api/v3/orgs/ORGANIZATION/migrations, en remplaçant HOSTNAME par le nom d’hôte de votre instance GitHub Enterprise Server et ORGANIZATION par l’identifiant de connexion de votre organisation.

Dans le corps, spécifiez le dépôt unique que vous souhaitez migrer. Votre demande doit ressembler à ceci :

POST /api/v3/orgs/acme-corp/migrations HTTP/1.1
Accept: application/vnd.github+json
Authorization: Bearer <TOKEN>
Content-Type: application/json
Host: github.acmecorp.net

{
  "repositories": ["repository_to_migrate"],
  "exclude_metadata": true
}

Pour générer une archive de vos métadonnées, envoyez une demande similaire à la même URL avec le corps suivant :

{
  "repositories": ["repository_to_migrate"],
  "exclude_git_data": true,
  "exclude_releases": false,
  "exclude_owner_projects": true
}

Chacun de ces appels d’API retourne une réponse JSON comprenant l’ID de la migration que vous avez démarrée.

HTTP/1.1 201 Created

{
  "id": 123,
  // ...
}

Pour plus d'informations, veuillez consulter la section Démarrer une migration d'organisation.

En fonction de la quantité de données, la génération des archives peut prendre un certain temps. Vous pouvez vérifier régulièrement l’état des deux migrations avec l’API « Obtenir l’état d’une migration d’organisation », jusqu’à ce que l’état (state) de la migration passe à exported.

GET /api/v3/orgs/acme-corp/migrations/123 HTTP/1.1
Accept: application/vnd.github+json
Authorization: Bearer <TOKEN>
Host: github.acmecorp.net

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 123,
  "state": "exported",
  // ...
}

Pour plus d'informations, veuillez consulter la section Obtenir le statut d'une migration d'organisation.

Remarque

Si votre migration passe à l'état failed plutôt qu'à l'état exported, essayez de démarrer la migration à nouveau. Si la migration échoue à plusieurs reprises, nous vous recommandons de générer les archives en utilisant ghe-migrator au lieu de l’API.

Effectuez les étapes décrites dans Exportation des données de migration de votre entreprise, en ajoutant un seul dépôt à la migration. À la fin du processus, vous disposerez d’une archive de migration unique avec votre source Git et vos métadonnées, et vous pourrez passer à l’étape 6 de cet article.

Quand l’état (state) d’une migration passe à exported, vous pouvez récupérer l’URL de la migration à l’aide de l’API « Télécharger une archive de migration d’organisation ».

GET /api/v3/orgs/acme-corp/migrations/123/archive HTTP/1.1
Accept: application/vnd.github+json
Authorization: Bearer <TOKEN>
Host: github.acmecorp.net

HTTP/1.1 302 Found
Location: https://media.github.acmecorp.net/migrations/123/archive/cca2ebe9-7403-4ffa-9b6a-4c9e16c94410?token=AAAAABEWE7JP4H2HACKEGMTDOYRC6

L’API retourne une réponse 302 Found avec un en-tête Location qui redirige vers l’URL où se trouve l’archive téléchargeable. Téléchargez les deux fichiers : un pour la source Git et un pour les métadonnées.

Pour plus d'informations, veuillez consulter la section Télécharger une archive de migration d'organisation.

Une fois les deux migrations terminées et les archives téléchargées, vous pouvez passer à l’étape suivante.

Étape 6 : Charger vos archives de migration

Pour importer vos données dans GitHub Enterprise Cloud, vous devez transmettre les deux archives pour chaque référentiel (source Git et métadonnées) depuis votre machine vers GitHub, à l'aide de notre API GraphQL.

Si vous utilisez GitHub Enterprise Server version 3.7 ou antérieure, vous devez d'abord générer des URL pour les archives accessibles par GitHub. La plupart des clients choisissent de charger les archives sur le service de stockage d’objets blob d’un fournisseur de cloud, comme Amazon S3 ou Stockage Blob Azure, puis de générer une URL à courte durée de vie pour chaque archive.

Si vous utilisez GitHub Enterprise Server 3.8 ou ultérieur, votre instance charge les archives et génère les URL pour vous. L’en-tête Location de l’étape précédente retourne l’URL à courte durée de vie.

Vous devrez peut-être établir une liste d’autorisation des plages d’adresses IP de GitHub. Pour plus d’informations, consultez « Gestion de l’accès pour une migration entre des produits GitHub ».

Charger vos archives de migration vers GitHub-owned blob storage

Si vous utilisez GitHub-owned blob storage, vous chargerez votre archive vers GitHub-owned blob storage en utilisant le processus suivant :

  1. Créez un chargement en plusieurs parties en soumettant une requête POST
  2. Chargez l'archive en plusieurs parties d'une taille maximale de 100 Mo en tant que requêtes PATCH
  3. Soumettez une requête PUT pour terminer le chargement

1. Créer le chargement en plusieurs parties

Vous soumettrez une requête POST à :

https://uploads.github.com/organizations/{organization_id}/gei/archive/blobs/uploads

Incluez un corps JSON comme ci-dessous avec le nom et la taille de l'archive. Le type de contenu peut rester "application/octet-stream" pour tous les chargements.

{
"content_type": "application/octet-stream",
"name": "git-archive.tar.gz",
"size": 262144000
}

Cela renverra une réponse d'objet JSON comme suit :

{
  "guid": "363b2659-b8a3-4878-bfff-eed4bcb54d35",
  "node_id": "MA_kgDaACQzNjNiMjY1OS1iOGEzLTQ4NzgtYmZmZi1lZWQ0YmNiNTRkMzU",
  "name": "git-archive.tar.gz",
  "size": 33287,
  "uri": "gei://archive/363b2659-b8a3-4878-bfff-eed4bcb54d35",
  "created_at": "2024-11-13T12:35:45.761-08:00"
}

Cet URI représente l'archive chargée et sera utilisé pour mettre en file d'attente la migration lorsque vous démarrerez votre migration de référentiel. La réponse inclura également l'emplacement dans l'en-tête de réponse utilisé pour charger des parties de fichier à l'aide d'une requête PATCH à l'étape suivante :

/organizations/{organization_id}/gei/archive/blobs/uploads?part_number=1&guid=<guid>&upload_id=<upload_id>

2. Charger l'archive en plusieurs parties

Chargez jusqu'à 100 Mo de votre fichier dans chaque partie avec une requête PATCH en utilisant l'emplacement de l'en-tête de réponse précédent, en vous assurant que les données brutes sont chargées dans le corps de la requête sans utiliser de formulaire multipart. Si la dernière partie de votre fichier est inférieure à 100 Mo, chargez uniquement les octets restants dans cette dernière requête :

https://uploads.github.com/{location}

Cela renverra un corps de réponse vide avec l'emplacement suivant dans l'en-tête de réponse :

/organizations/{organization_id}/gei/archive/blobs/uploads?part_number=2&guid=<guid>&upload_id=<upload_id>

Répétez cette opération jusqu'à ce que le chargement soit terminé. Assurez-vous de lire jusqu'à 100 Mo du fichier à la fois et de soumettre des requêtes aux nouvelles valeurs d'emplacement avec les valeurs part_number incrémentées.

3. Terminer le chargement

Soumettez une requête PUT à la valeur « dernier chemin » de l'étape précédente avec un corps vide et votre chargement vers le stockage appartenant à GitHub est terminé. L'URI GEI peut être construit avec le GUID de cette requête POST initiale au format suivant :

gei://archive/{guid}

Étape 7 : Démarrer la migration de votre dépôt

Lorsque vous démarrez une migration, un seul dépôt et ses données associées migrent vers un tout nouveau dépôt GitHub que vous identifiez.

Si vous souhaitez déplacer plusieurs dépôts à la fois de la même organisation source, vous pouvez mettre en file d’attente plusieurs migrations. Vous pouvez exécuter jusqu’à 5 migrations de dépôt en même temps.

Mutation startRepositoryMigration

mutation startRepositoryMigration (
  $sourceId: ID!,
  $ownerId: ID!,
  $repositoryName: String!,
  $continueOnError: Boolean!,
  $accessToken: String!,
  $githubPat: String!,
  $gitArchiveUrl: String!,
  $metadataArchiveUrl: String!,
  $sourceRepositoryUrl: URI!,
  $targetRepoVisibility: String!
){
  startRepositoryMigration( input: {
    sourceId: $sourceId,
    ownerId: $ownerId,
    repositoryName: $repositoryName,
    continueOnError: $continueOnError,
    accessToken: $accessToken,
    githubPat: $githubPat,
    targetRepoVisibility: $targetRepoVisibility
    gitArchiveUrl: $gitArchiveUrl,
    metadataArchiveUrl: $metadataArchiveUrl,
    sourceRepositoryUrl: $sourceRepositoryUrl,
  }) {
    repositoryMigration {
      id
      migrationSource {
        id
        name
        type
      }
      sourceUrl
    }
  }
}
Variable de requêteDescription
sourceIdid de votre source de migration retournée par la mutation createMigrationSource.
ownerIdID d’organisation de votre organisation sur GitHub Enterprise Cloud.
repositoryNameNom de dépôt unique personnalisé qui n’est actuellement utilisé par aucun de vos dépôts appartenant à l’organisation sur GitHub Enterprise Cloud. Un problème de journalisation des erreurs sera créé dans ce dépôt une fois votre migration terminée ou arrêtée.
continueOnErrorParamètre de migration qui permet à la migration de se poursuivre en cas d’erreurs qui n’entraînent pas l’échec de la migration. Doit être true ou false. Nous vous recommandons vivement de définir continueOnError sur true afin que votre migration continue, sauf si Importer ne peut pas déplacer la source Git ou que Importer a perdu la connexion et ne peut pas se reconnecter pour terminer la migration.
githubPatpersonal access token pour votre organisation de destination sur GitHub Enterprise Cloud.
accessTokenpersonal access token pour votre source.
targetRepoVisibilityVisibilité du nouveau dépôt. Doit être private, public ou internal. Si elle n’est pas définie, votre dépôt est migré avec une visibilité privée.
gitArchiveUrlURL de l’archive de votre source Git accessible à GitHub Enterprise Cloud.
          `metadataArchiveUrl` | Une URL de votre archive de métadonnées accessible par GitHub Enterprise Cloud.

          `sourceRepositoryUrl` | L'URL de votre référentiel sur votre instance GitHub Enterprise Server. Elle est obligatoire, mais GitHub Enterprise Cloud ne communique pas directement avec votre instance GitHub Enterprise Server.

Pour connaître les exigences relatives aux personal access token, veuillez consulter la section Gestion de l’accès pour une migration entre des produits GitHub.

À l’étape suivante, vous allez utiliser l’ID de migration retourné par la mutation startRepositoryMigration pour vérifier l’état de la migration.

Étape 8 : Vérifier l’état de votre migration

Pour détecter les échecs de migration et vous assurer que votre migration fonctionne, vous pouvez vérifier l’état de votre migration en utilisant la requête getMigration. Vous pouvez également vérifier l’état de plusieurs migrations avec getMigrations.

La requête getMigration est retournée avec un état pour vous indiquer si la migration est queued, in progress, failed ou completed. Si votre migration a échoué, Importer fournit la raison de l’échec.

Requête getMigration

query (
  $id: ID!
){
  node( id: $id ) {
    ... on Migration {
      id
      sourceUrl
      migrationSource {
        name
      }
      state
      failureReason
    }
  }
}
Variable de requêteDescription
idid de votre migration que la mutation startRepositoryMigration a retourné.

Étape 9 : Valider votre migration et consulter le journal des erreurs

É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.

  1. Installez GitHub CLI. Pour obtenir des instructions d’installation pour GitHub CLI, consultez le dépôt GitHub CLI.

    Remarque

    Vous avez besoin de la version 2.4.0 ou d'une version plus récente de GitHub CLI. Vous pouvez vérifier la version que vous avez installée avec la commande gh --version.

  2. Installez GEI extension.

    Shell
    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.

  1. Créez et enregistrez un personal access token (classic) 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 des produits GitHub ».

  2. 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.

  3. 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 et GH_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"
      
    • Si vous utilisez PowerShell, utilisez la commande $env.

      Shell
      $env:GH_PAT="TOKEN"
      $env:GH_SOURCE_PAT="TOKEN"
      
  4. Si vous migrez vers GitHub Enterprise Cloud avec résidence des données, pour des raisons pratiques, définissez une variable d'environnement pour l'URL de l'API de base de votre entreprise.

    Vérifiez que vous remplacez SUBDOMAIN par le sous-domaine de votre entreprise. Par exemple, si le sous-domaine de votre entreprise est acme, la TARGET_API_URL valeur est https://api.acme.ghe.com.

    • Si vous utilisez le Terminal, utilisez la commande export.

      Shell
      export TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
      
    • Si vous utilisez PowerShell, utilisez la commande $env.

      Shell
      $env:TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
      

    Vous allez utiliser cette variable avec l’option --target-api-url dans les commandes que vous exécutez avec les données GitHub CLI.

Étape 4 : Configurer le stockage d’objets blob

Migrer des référentiels avec GitHub-owned blob storage

Si vous ne souhaitez pas configurer et fournir à GitHub Enterprise Importer un accès à un compte de stockage d'objets blob appartenant au client pour stocker vos archives de référentiel, vous pouvez migrer des référentiels à l'aide de GitHub-owned blob storage. Pour ce faire, vous devez exécuter la version v1.9.0 (ou ultérieure) de GEI extension of the GitHub CLI. GitHub-owned blob storage ne nécessite aucune configuration supplémentaire et est disponible en tant qu'option lorsque vous exécutez des commandes GEI extension of the GitHub CLI.

Pour des raisons de sécurité, GitHub-owned blob storage est explicitement en écriture seule, et les téléchargements depuis GitHub-owned blob storage ne sont pas possibles. Une fois une migration terminée, les archives de référentiel sont supprimées immédiatement. Si une archive est chargée et n'est pas utilisée dans une migration, l'archive est supprimée après 7 jours.

Lorsque vous utilisez l'indicateur CLI pour GitHub-owned blob storage, l'archive de référentiel est automatiquement exportée vers la destination configurée dans la Management Console, chargée vers le stockage appartenant à GitHub et importée vers votre destination de migration. Lorsque vous utilisez GitHub-owned blob storage, nous vous recommandons de configurer le stockage local. Veuillez consulter la section Utiliser le stockage local (GHES 3.16+).

Migrer des référentiels avec un stockage d'objets blob appartenant au client

Vous devez stocker vos données de référentiel dans un emplacement auquel GitHub peut accéder. Si votre instance GitHub Enterprise Server se trouve derrière un pare-feu, vous devrez peut-être configurer le stockage d’objets blob avec un service cloud externe.

Pour commencer, vous devez configurer le stockage d’objets blob avec un fournisseur pris en charge. Ensuite, si vous utilisez un fournisseur de cloud, vous devez configurer vos informations d’identification pour le fournisseur de stockage dans la Management Console ou GitHub CLI.

GitHub CLI prend en charge les fournisseurs de stockage de blobs suivants :

  • Amazon Web Services (AWS) S3

  • Stockage Blob Azure

  • Stockage local sur l’instance GHES (GHES 3.16 et versions ultérieures). Nous vous recommandons d’utiliser cette option avec GitHub-owned blob storage.

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.

Utiliser le stockage local (GHES 3.16+)

Lorsque vous exécutez une migration avec un stockage local, les données d’archivage sont écrites sur le disque sur votre instance GitHub Enterprise Server, sans nécessiter un fournisseur de stockage cloud.

  • Si vous ne disposez pas de règles de pare-feu bloquant le trafic sortant de GitHub Enterprise Server, GitHub Enterprise Importer peut automatiquement récupérer l’archive stockée à partir de GitHub Enterprise Server.
  • Si vous avez mis en place des règles de pare-feu et que vous ne souhaitez pas autoriser l’accès à GitHub Enterprise Importer, vous pouvez télécharger vos données d’archive vers GitHub-owned blob storage afin que GitHub Enterprise Importer puisse y accéder. Pour le faire manuellement, consultez Téléchargement de vos archives de migration sur le stockage blob détenu par GitHub dans la version API de cet article.
  1. À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.
  2. Dans la barre latérale « Site admin », cliquez sur Management Console.
  3. Connectez-vous à la Management Console.
  4. Dans la barre latérale gauche, cliquez sur Migrations.
  5. Cliquez sur Activer les migrations GitHub.
  6. Sous « Stockage des migrations », cliquez sur Stockage local.
  7. Cliquez sur Enregistrer les paramètres.

Lorsque vous effectuez la migration, surveillez l’espace disque sur GitHub Enterprise Server. Les archives de migration sont automatiquement supprimés après 7 jours. Pour libérer de l’espace, vous pouvez supprimer une archive à l’aide de l' Points de terminaison d’API REST pour les migrations d’organisation.

Configuration de vos informations d’identification pour le stockage d’objets blob

Si vous configurez le stockage d'objets blob avec un fournisseur cloud (plutôt qu'avec le stockage local), 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 devez uniquement configurer le stockage d'objets blob dans Management Console si vous utilisez GitHub Enterprise Server version 3.8 ou une version ultérieure. 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 ».

  1. À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.

  2. 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 « Site admin », cliquez sur Management Console.

  3. Connectez-vous à la Management Console.

  4. Dans la barre de navigation supérieure, cliquez sur Paramètres.

  5. Sous Migrations, cliquez sur Activer les migrations GitHub .

  6. 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, il se peut que vous deviez encore mettre à jour la configuration de votre compte de stockage en nuage pour qu'il fonctionne avec 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 des produits GitHub ».

  7. 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.

    Remarque

    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) est https://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 que bucket.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.

  8. Cliquez sur Tester les paramètres de stockage.

  9. Cliquez sur Enregistrer les paramètres.

Configuration de vos informations d’identification pour le stockage d’objets blob dans GitHub CLI

Remarque

Vous devez uniquement configurer vos informations d'identification de stockage d'objets blob dans GitHub CLI si vous utilisez GitHub Enterprise Server version 3.7 ou une version antérieure. 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.

Autoriser l'accès au réseau

Si vous avez configuré des règles de pare-feu sur votre compte de stockage, assurez-vous d'avoir autorisé l'accès aux plages d'adresses IP de votre destination de migration. Consultez Gestion de l’accès pour une migration entre des produits GitHub.

É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 :

Shell
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 :

Shell
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

Espaces réservés

Remplacez les espaces réservés dans la commande ci-dessus par les valeurs suivantes.

Espace réservéValeur
SOURCENom de l’organisation source
DESTINATIONNom de l’organisation de destination
FILENAMENom 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-URLURL pour l’API de votre instance GitHub Enterprise Server, par exemple https://myghes.com/api/v3
AWS-BUCKET-NAMENom de compartiment pour votre compartiment AWS S3

Arguments supplémentaires

ArgumentDescription
--download-migration-logsTéléchargez le journal de migration pour chaque référentiel migré. Pour plus d'informations sur les journaux de migration, veuillez consulter la section Accès à vos journaux de migration pour GitHub Enterprise Importer.
--lock-source-repoVerrouillez le référentiel source lors de la migration.
          **Avertissement:** Le verrouillage d’un référentiel source empêche d’autres modifications et peut perturber les flux de travail. Il est recommandé d’utiliser cette option uniquement si vous êtes certain qu’elle est appropriée. Pour plus d’informations, consultez « [AUTOTITLE](/migrations/overview/about-locked-repositories) ». |

| --no-ssl-verify | 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. | | --skip-releases | Si votre référentiel contient plus de 10 Go de données sur les versions, les versions ne peuvent pas être migrées. Utilisez l’indicateur --skip-releases pour migrer le dépôt sans les mises en production. | | --target-api-url TARGET-API-URL | Si vous migrez vers GHE.com, ajoutez --target-api-url TARGET-API-URL, où TARGET-API-URL est l'URL de l'API de base pour le sous-domaine de votre entreprise. Par exemple : https://api.octocorp.ghe.com. | | --use-github-storage| Effectue une migration de référentiel à l'aide de GitHub-owned blob storage comme solution intermédiaire de stockage d'objets blob. |

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.
  • Si vous souhaitez modifier la visibilité d’un nouveau référentiel, mettez à jour la valeur de l’indicateur correspondant --target-repo-visibility . Par défaut, le script définit la même visibilité que le référentiel source.

Si votre référentiel contient plus de 10 Go de données sur les versions, les versions 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 :

  1. 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
  2. Charge les archives de migration sur le fournisseur de stockage d’objets blob de votre choix
  3. Démarre votre migration dans GitHub Enterprise Cloud à l’aide des URL des archives stockées avec votre fournisseur de stockage blob
  4. Supprime l'archive de migration de votre machine locale

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_ID : l'ID de clé d'accès de votre compartiment * AWS_SECRET_ACCESS_KEY : la clé secrète de votre compartiment * AWS_REGION : la région AWS où votre compartiment est situé * AWS_SESSION_TOKEN : le token de session, si vous utilisez des informations d'identification temporaires AWS (voir Utiliser des informations d'identification temporaires avec des ressources AWS dans la documentation AWS)

Pour migrer plusieurs référentiels, exécutez le script que vous avez généré. 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
    
  • Si vous employez PowerShell, utilisez .\.

    Shell
    .\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 :

Shell
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 :

Shell
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 :

Shell
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"

Espaces réservés

Remplacez les espaces réservés dans la commande ci-dessus par les valeurs suivantes.

Espace réservéValeur
SOURCENom de l’organisation source
CURRENT-NAMENom du dépôt que vous souhaitez migrer
DESTINATIONNom de l’organisation de destination
NEW-NAMENom que vous souhaitez donner au dépôt migré
GHES-API-URLURL pour l’API de votre instance GitHub Enterprise Server, par exemple https://myghes.com/api/v3
AZURE_STORAGE_CONNECTION_STRINGChaî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-NAMENom de compartiment pour votre compartiment AWS S3

Arguments supplémentaires

ArgumentDescription
--lock-source-repoVerrouillez le référentiel source lors de la migration. Pour plus d’informations, consultez « À propos des dépôts verrouillés ».
--no-ssl-verifySi 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.
--skip-releasesSi votre référentiel contient plus de 10 Go de données sur les versions, les versions ne peuvent pas être migrées. Utilisez l’indicateur --skip-releases pour migrer le dépôt sans les mises en production.
--target-api-url TARGET-API-URLSi vous migrez vers GHE.com, ajoutez --target-api-url TARGET-API-URL, où TARGET-API-URL est l'URL de l'API de base pour le sous-domaine de votre entreprise. Par exemple : https://api.octocorp.ghe.com.
--target-repo-visibility TARGET-VISIBILITYLes dépôts sont migrés avec une visibilité privée par défaut. Pour définir la visibilité, vous pouvez ajouter l’indicateur --target-repo-visibility, spécifier private, public, ou internal. Si vous effectuez une migration vers un entreprise avec utilisateurs managés, les référentiels publics ne sont pas disponibles.
--use-github-storageEffectue une migration de référentiel à l'aide de GitHub-owned blob storage comme solution intermédiaire de stockage d'objets blob.

Abandon de la migration

Shell
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 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.