{"meta":{"title":"Migration de votre référentiel avec Enterprise Live Migrations","intro":"Migrez de GitHub Enterprise Server vers GHE.com avec un temps d’arrêt minimal.","product":"Migrations","breadcrumbs":[{"href":"/fr/enterprise-server@3.18/migrations","title":"Migrations"},{"href":"/fr/enterprise-server@3.18/migrations/elm","title":"Migrations dynamiques (GHES vers GHE.com)"},{"href":"/fr/enterprise-server@3.18/migrations/elm/migrate-your-repository","title":"Migrer votre référentiel"}],"documentType":"article"},"body":"# Migration de votre référentiel avec Enterprise Live Migrations\n\nMigrez de GitHub Enterprise Server vers GHE.com avec un temps d’arrêt minimal.\n\n> \\[!TIP] À mesure que vous suivez ce guide, vous pouvez vous référer à [Référence CLI pour les migrations en direct Enterprise](/fr/enterprise-server@3.18/migrations/elm/elm-cli-reference) pour obtenir des informations d’utilisation plus détaillées. Si vous rencontrez des erreurs, consultez [Résolution des problèmes de migrations dynamiques de GitHub Enterprise Server vers GHE.com](/fr/enterprise-server@3.18/migrations/elm/troubleshooting).\n\n## Prerequisites\n\nAssurez-vous que vos environnements et développeurs sont prêts pour la migration. Consultez « [Préparation de votre migration dynamique de GitHub Enterprise Server vers GHE.com](/fr/enterprise-server@3.18/migrations/elm/prepare-for-your-migration) ».\n\n## 1. Configurer GitHub Enterprise Server\n\nVous devez définir une configuration sur l’instance GitHub Enterprise Server avant de créer des jetons et d’effectuer une migration. Ces valeurs de configuration s’appliquent à toutes les ELM migrations. Les développeurs sur GitHub Enterprise Server pourraient connaître un court temps d'arrêt lorsque vous appliquez la nouvelle configuration.\n\n1. Accédez à l’interpréteur de commandes d’administration GitHub Enterprise Server via SSH. Consultez « [Accès à l’interpréteur de commandes d’administration (SSH)](/fr/enterprise-server@3.18/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh) ».\n\n2. Définissez les variables de configuration suivantes avec `ghe-config`.\n\n   Par exemple : `ghe-config app.elm-exporter.enabled true`\n\n   | Variable                                             | Définissez cette valeur sur...                                                                                                                                                                                                                                                                                        |\n   | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n   | `app.elm-exporter.enabled`                           | `true`                                                                                                                                                                                                                                                                                                                |\n   | `app.elm.internal-webhooks-enabled`                  | `true`                                                                                                                                                                                                                                                                                                                |\n   | `app.elm-exporter.webhooks-loopback-address-enabled` | `true`                                                                                                                                                                                                                                                                                                                |\n   | `secrets.elm-exporter.migration-target-url`          | URL de l’API pour votre entreprise de destination (par exemple : `https://api.octocorp.ghe.com`). N’incluez **pas** de barre oblique finale dans l’URL.                                                                                                                                                               |\n   | `secrets.elm-exporter.source-user`                   | Nom d’utilisateur associé au jeton de l’opérateur GitHub Enterprise Server . Il doit s’agir de votre nom d’utilisateur sur GitHub Enterprise Server; si quelqu’un d’autre va créer ce jeton, la valeur ici doit être définie sur son nom d’utilisateur. Nous vous recommandons d’utiliser l’utilisateur `ghe-admin` . |\n\n3. Appliquez la configuration.\n\n   ```shell copy\n   ghe-config-apply\n   ```\n\n4. Quittez la session SSH. Vous allez exécuter le reste des commandes dans une session de terminal locale.\n\n## 2. Créer des jetons d’opérateur avec accès d’entreprise\n\nL’opérateur doit s’authentifier auprès de l’entreprise source et de destination avec un personal access token (classic). Pour obtenir des instructions sur la création de jetons, consultez [Gestion de vos jetons d’accès personnels](/fr/enterprise-server@3.18/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).\n\n**Veillez à noter les deux jetons**, car vous en aurez besoin à l’étape suivante.\n\n1. Sur **GitHub Enterprise Server**, créez un personal access token (classic) et sélectionnez l’étendue requise :\n\n   * `admin:enterprise`\n\n   Vous utiliserez ce jeton comme **jeton source** lors de la configuration du ELM CLI.\n\n2. Sur **GHE.com**, créez un personal access token (classic) et sélectionnez les étendues requises :\n\n   * `admin:enterprise`\n   * `admin:org`\n\n   Vous utiliserez ce jeton comme **jeton cible** lors de la configuration du ELM CLI.\n\n## 3. Configurer l’outil de ligne de commande ELM\n\nVous allez exécuter la migration à partir d’une session de terminal local, à l’aide d’une extension du GitHub CLI.\n\n1. Installez le [GitHub CLI](https://cli.github.com/) sur votre machine locale. Vous devez utiliser la version 2.0 ou ultérieure.\n\n2. Installer l’extension ELM.\n\n   ```shell copy\n   gh extension install github/gh-elm\n   ```\n\n3. Lancez l’Assistant Installation pour configurer l’extension.\n\n   ```shell copy\n   gh elm configure\n   ```\n\n4. Suivez les instructions de l’Assistant Installation, en fournissant les URL d’API (par exemple : `https://api.SUBDOMAIN.ghe.com`) pour votre source et votre destination et les jetons que vous avez créés à l’étape précédente.\n\nL’une de ces valeurs peut également être fournie en tant qu’indicateurs CLI sur n’importe quelle `gh elm` commande, qui prend la priorité sur la configuration. Par exemple : `--target-url https://api.SUBDOMAIN.ghe.com`.\n\nCe processus d’installation stocke les URL dans un fichier de configuration spécifique à la plateforme dans le répertoire de configuration de votre système d’exploitation, à l’adresse `gh-elm/config.json`. Les jetons d’accès seront stockés en toute sécurité dans le stockage secret de votre ordinateur.\n\n## 4. Configurer les secrets de migration dynamiques\n\nEn plus des jetons d’opérateur ayant un accès d’entreprise, vous devez créer un personal access token (classic) pour les organisations source et cible. Vous devez répéter ces étapes pour chaque organisation à partir de laquelle vous migrez.\n\n### Créer des jetons d’accès\n\nELM doit s’authentifier auprès d’une personal access token (classic) pour la source et la destination de la migration. Pour obtenir des instructions sur la création de jetons, consultez [Gestion de vos jetons d’accès personnels](/fr/enterprise-server@3.18/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).\n\n**Veillez à noter ces jetons**, car vous en aurez besoin à l’étape suivante.\n\n1. Créez une personal access token (classic) sur **GitHub Enterprise Server** avec les portées suivantes :\n\n   * `repo`\n   * `admin:org`\n   * `admin:repo_hook`\n   * `admin:org_hook`\n\n   Il s’agit de votre jeton source.\n\n2. Créez une personal access token (classic) sur **GHE.com** avec les portées suivantes :\n\n   * `repo`\n   * `workflow`\n   * `admin:org`\n   * `admin:repo_hook`\n   * `admin:enterprise`\n\n   Il s’agit de votre jeton cible.\n\n   > \\[!IMPORTANT]\n   > Si l’authentification unique est imposée pour l’organisation cible sur GHE.com, vous devez autoriser le jeton GHE.com pour l’authentification unique.\n\n### Configurer les secrets de votre organisation ELM\n\nUtilisez les commandes pour définir les `gh elm config` jetons d’accès source et cible :\n\n1. Définissez le jeton source.\n\n   ```shell copy\n   gh elm config set-source-pat EXISTING-GHES-ORG\n   ```\n\n   Collez le jeton source dans le terminal lorsque vous y êtes invité.\n\n2. Définissez le jeton cible.\n\n   ```shell copy\n   gh elm config set-target-pat EXISTING-GHES-ORG\n   ```\n\n   Collez le jeton cible dans le terminal quand vous y êtes invité.\n\nVous pouvez également définir les jetons de manière interactive, à l’aide `gh elm config org-tokens EXISTING-GHES-ORG`ou dans les paramètres de votre organisation à l’adresse `https://GHES_HOSTNAME/organizations/EXISTING-GHES-ORG/settings/secrets/elm-exporter/`.\n\n## 5. Créer une migration\n\nCréez une migration en spécifiant les détails du référentiel source et cible.\n\n> \\[!NOTE] Il `target-org` peut être nouveau ou existant. Si l’organisation cible n’existe pas déjà, elle est créée pendant la migration. Toutefois, aucun paramètre de l’organisation source n’est migré.\n\n```shell copy\ngh elm migration create \\\n  --source-org EXISTING-GHES-ORG \\\n  --source-repo EXISTING-GHES-REPO \\\n  --target-org GHEC-ORG \\\n  --target-repo NEW-GHEC-REPO\n```\n\nPar exemple:\n\n```shell\ngh elm migration create \\\n  --source-org my-ghes-org \\\n  --source-repo my-ghes-repo \\\n  --target-org my-dr-org \\\n  --target-repo my-dr-repo\n```\n\nIndicateurs facultatifs :\n\n* `--start`: si vous êtes prêt à démarrer la migration immédiatement.\n* `--target-visibility`: les référentiels migrés sont créés avec une visibilité **interne** par défaut, mais vous pouvez spécifier `private`.\n\n### Enregistrer l’ID de migration\n\nVous devez voir une réponse semblable à ce qui suit :\n\n```json\n{\n  \"migrationId\": \"2b5c9eae-b5da-4306-ab04-2a29cc2b7cb9\",\n  \"expiresAt\": \"2026-02-11T21:49:33.619162159Z\"\n}\n```\n\nExportez la `migrationId` variable en tant que variable, car vous en aurez besoin pour les commandes suivantes. Par exemple:\n\n```shell\nexport MIGRATION_ID='2b5c9eae-b5da-4306-ab04-2a29cc2b7cb9'\n```\n\n## 6. Démarrer la migration\n\nSi vous n’avez pas déjà démarré la migration, démarrez-la maintenant à l’aide de l’ID de migration que vous venez d’enregistrer.\n\n```shell copy\ngh elm migration start --migration-id $MIGRATION_ID\n```\n\nCela lance les processus de remplissage et de mise à jour dynamique.\nELM collecte désormais des données à partir du référentiel source et surveille les événements webhook pris en charge.\n\n## 7. Surveiller la migration\n\nUne fois la migration démarrée, vous devez voir un nouveau référentiel sur GHE.com. Pendant la migration, vous verrez le dépôt remplir avec une charge initiale de données et recevoir des mises à jour lorsque les développeurs continuent à travailler dans le référentiel source.\n\nVous pouvez surveiller la progression de la migration de manière interactive à l’aide de la `watch` commande :\n\n```shell\ngh elm migration watch $MIGRATION_ID\n```\n\nCela interroge l’API d’état de migration et affiche une interface utilisateur de texte auto-actualisante qui reflète la progression actuelle.\n\n### Supervision par programmation à l’aide de `migration status`\n\nSi vous souhaitez qu’un état de migration convient à l’automatisation, utilisez la `status` commande :\n\n```shell copy\ngh elm migration status --migration-id $MIGRATION_ID\n```\n\nL’indicateur le plus important dans la réponse est l’état de l’objet **combinedState** . Lorsque l’état atteint `COMBINED_STATUS_READY_FOR_CUTOVER`, vous devez être prêt à passer à l’étape suivante. Toutefois, vous serez averti dans le `displayMessage` si des ressources individuelles n'ont pas pu migrer, que vous devrez peut-être examiner.\n\nPar exemple:\n\n```json\n  \"combinedState\":  {\n    \"status\":  \"COMBINED_STATUS_READY_FOR_CUTOVER\",\n    \"displayMessage\":  \"Ready for cutover (1 resources failed)\",\n    \"repositories\":  [\n      {\n        \"repositoryNwo\":  \"new-test-org/my-new-repo\",\n        \"phase\":  \"REPOSITORY_PHASE_READY_FOR_CUTOVER\",\n        \"displayStatus\":  \"Ready for cutover (1 failed)\"\n      }\n    ],\n    \"readyForCutover\":  true,\n    \"cutoverBlockers\":  []\n  },\n```\n\nConseils :\n\n* Si vous exécutez plusieurs migrations, vous pouvez vérifier l’état de toutes ces dernières `gh elm migration list`. Cette commande affiche les migrations en cours par défaut, mais vous pouvez également filtrer par `--status`.\n* Si vous rencontrez des statuts d'erreur qui nécessitent une attention particulière, consultez [Résolution des problèmes de migrations dynamiques de GitHub Enterprise Server vers GHE.com](/fr/enterprise-server@3.18/migrations/elm/troubleshooting#statuses-and-recommended-actions).\n\n## 8. Terminer la migration\n\nQuand une migration est prête pour la transition, vous pouvez effectuer la migration. Le processus de basculement archivera le référentiel source, le rendant **définitivement en lecture seule**, sauf si un administrateur du référentiel le désarchive.\n\n```shell copy\ngh elm migration cutover --migration-id $MIGRATION_ID\n```\n\nContinuez à surveiller la migration. Lorsque vous voyez l’état `MIGRATION_STATUS_COMPLETED` en haut de la réponse, la migration est terminée, bien qu’il existe des tâches de suivi permettant d’accorder l’accès aux utilisateurs à partir de GitHub Enterprise Server.\n\n## Étapes suivantes\n\nDonnez aux utilisateurs l’accès au nouveau référentiel et rapprochez l’activité avec les comptes d’utilisateur. Consultez « [Fin de votre migration dynamique de GitHub Enterprise Server vers GHE.com](/fr/enterprise-server@3.18/migrations/elm/complete-your-migration) »."}