{"meta":{"title":"Migration à partir de Azure DevOps avec GitHub Actions Importer","intro":"Découvrez comment automatiser GitHub Actions Importer la migration de vos pipelines Azure DevOps vers GitHub Actions.","product":"GitHub Actions","breadcrumbs":[{"href":"/fr/actions","title":"GitHub Actions"},{"href":"/fr/actions/tutorials","title":"Tutoriels"},{"href":"/fr/actions/tutorials/migrate-to-github-actions","title":"Migrer vers GitHub Actions"},{"href":"/fr/actions/tutorials/migrate-to-github-actions/automated-migrations","title":"Migrations automatisées"},{"href":"/fr/actions/tutorials/migrate-to-github-actions/automated-migrations/azure-devops-migration","title":"migration de Azure DevOps"}],"documentType":"article"},"body":"# Migration à partir de Azure DevOps avec GitHub Actions Importer\n\nDécouvrez comment automatiser GitHub Actions Importer la migration de vos pipelines Azure DevOps vers GitHub Actions.\n\n## À propos de la migration à partir de Azure DevOps avec GitHub Actions Importer\n\nLes instructions ci-dessous vous guident tout au long de la configuration de votre environnement à utiliser GitHub Actions Importer pour migrer Azure DevOps pipelines vers GitHub Actions.\n\n### Prérequis\n\n* Un compte ou une organisation Azure DevOps avec des projets et des pipelines que vous souhaitez convertir en GitHub Actions flux de travail.\n* Accès pour créer un Azure DevOps personal access token pour votre compte ou votre organisation.\n* Un environnement dans lequel vous pouvez exécuter des conteneurs basés sur Linux et installer les outils nécessaires.\n  * Docker est [installé](https://docs.docker.com/get-docker/) et en cours d’exécution.\n\n  * L’[interface CLI GitHub](https://cli.github.com) est installée.\n  > \\[!NOTE]\n  > Le conteneur GitHub Actions Importer et l’interface CLI n’ont pas besoin d’être installés sur le même serveur que votre plateforme CI.\n\n### Limites\n\nIl existe certaines limitations lors de la migration d’Azure DevOps vers GitHub Actions avec GitHub Actions Importer :\n\n* GitHub Actions Importernécessite la version 5.0 de l’API Azure DevOps, disponible dans Azure DevOps Services ou Azure DevOps Server 2019. Les versions antérieures de Azure DevOps Server ne sont pas compatibles.\n* Les tâches qui sont implicitement ajoutées à un pipeline Azure DevOps, telles que l’extraction du code source, peuvent être ajoutées à un GitHub Actions Importer audit en tant que nom GUID. Pour trouver le nom de tâche convivial d’un GUID, vous pouvez utiliser l’URL suivante : `https://dev.azure.com/:organization/_apis/distributedtask/tasks/:guid`.\n\n#### Tâches manuelles\n\nCertains éléments d’Azure DevOps doivent être migrés manuellement depuis Azure DevOps dans les configurations GitHub Actions. Il s’agit notamment des paramètres suivants :\n\n* Secrets d’organisation, de dépôt et d’environnement\n* Connexions de service telles que OIDC Connect, GitHub Appset personal access tokens\n* Tâches inconnues\n* Agents auto-hébergés\n* Environnements\n* Approbations pré-déploiement\n\nPour plus d’informations sur les migrations manuelles, consultez « [Migration de Azure Pipelines vers GitHub Actions](/fr/actions/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-azure-pipelines) ».\n\n#### Tâches non prises en charge\n\nGitHub Actions Importer ne prend pas en charge la migration des tâches suivantes :\n\n* Portes pré-déploiement\n* Portes post-déploiement\n* Approbations post-déploiement\n* Certains déclencheurs de ressources\n\n## Installation de l’extension GitHub Actions Importer CLI\n\n1. Installez l’extension CLI GitHub Actions Importer :\n\n   ```bash copy\n   gh extension install github/gh-actions-importer\n   ```\n\n2. Vérifiez que l’extension est installée :\n\n   ```bash\n   $ gh actions-importer -h\n   Options:\n     -?, -h, --help  Show help and usage information\n\n   Commands:\n     update     Update to the latest version of GitHub Actions Importer.\n     version    Display the version of GitHub Actions Importer.\n     configure  Start an interactive prompt to configure credentials used to authenticate with your CI server(s).\n     audit      Plan your CI/CD migration by analyzing your current CI/CD footprint.\n     forecast   Forecast GitHub Actions usage from historical pipeline utilization.\n     dry-run    Convert a pipeline to a GitHub Actions workflow and output its yaml file.\n     migrate    Convert a pipeline to a GitHub Actions workflow and open a pull request with the changes.\n   ```\n\n## Configuration des informations d’identification\n\nLa commande CLI `configure` permet de définir les informations d’identification et les options requises pour GitHub Actions Importer lors de l’utilisation d’Azure DevOps et de GitHub.\n\n1. Créer un GitHubpersonal access token (classic). Pour plus d’informations, consultez « [Gestion de vos jetons d’accès personnels](/fr/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic) ».\n\n   Votre jeton doit avoir l’étendue `workflow`.\n\n   Après avoir créé le jeton, copiez-le et enregistrez-le en lieu sûr en vue de l’utiliser ultérieurement.\n\n2. Créez un Azure DevOps personal access token. Pour plus d’informations, consultez [Use personal access tokens](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops\\&tabs=Windows#create-a-pat) dans la documentation Azure DevOps. Le jeton doit avoir les périmètres suivants :\n\n   * Pool d’agents : `Read`\n   * Build : `Read`\n   * Code : `Read`\n   * Version publiée : `Read`\n   * Connexions de service : `Read`\n   * Groupes de tâches : `Read`\n   * Groupe de variables : `Read`\n\n   Après avoir créé le jeton, copiez-le et enregistrez-le en lieu sûr en vue de l’utiliser ultérieurement.\n\n3. Dans votre terminal, exécutez la GitHub Actions Importer`configure` commande CLI :\n\n   ```shell\n   gh actions-importer configure\n   ```\n\n   La commande `configure` vous invite à entrer les informations suivantes :\n\n   * Pour « Quels fournisseurs CI configurez-vous ? », utilisez les touches de direction pour sélectionner `Azure DevOps`, appuyez sur <kbd>Space</kbd> pour le sélectionner, puis appuyez sur <kbd>Enter</kbd>.\n   * Pour «Personal access token pour GitHub », entrez la valeur du personal access token (classic) fichier que vous avez créé précédemment, puis <kbd>appuyez sur Entrée</kbd>.\n   * Pour « URL de base de l’instance GitHub », <kbd>appuyez sur Entrée</kbd> pour accepter la valeur par défaut (`https://github.com`).\n   * Pour «Personal access token for Azure DevOps », entrez la valeur du Azure DevOps personal access token que vous avez créé précédemment, puis <kbd>appuyez sur Entrée</kbd>.\n   * Pour « URL de base de l’instance de Azure DevOps », appuyez sur <kbd>Enter</kbd> pour accepter la valeur par défaut (`https://dev.azure.com`).\n   * Pour « Azure DevOps nom de l’organisation », entrez le nom de votre organisation Azure DevOps, puis appuyez sur <kbd>Enter</kbd>.\n   * Pour « Azure DevOps nom du projet », entrez le nom de votre projet Azure DevOps, puis appuyez sur <kbd>Enter</kbd>.\n\n   Voici un exemple de la commande `configure` :\n\n   ```shell\n   $ gh actions-importer configure\n   ✔ Which CI providers are you configuring?: Azure DevOps\n   Enter the following values (leave empty to omit):\n   ✔ Personal access token for GitHub: ***************\n   ✔ Base url of the GitHub instance: https://github.com\n   ✔ Personal access token for Azure DevOps: ***************\n   ✔ Base url of the Azure DevOps instance: https://dev.azure.com\n   ✔ Azure DevOps organization name: :organization\n   ✔ Azure DevOps project name: :project\n   Environment variables successfully updated.\n   ```\n\n4. Dans votre terminal, exécutez la GitHub Actions Importer`update` commande CLI pour vous connecter à l’image GitHub PackagesContainer registry conteneur et vérifiez que l’image conteneur est mise à jour vers la dernière version :\n\n   ```shell\n   gh actions-importer update\n   ```\n\n   La sortie de la commande devrait ressembler à la sortie ci-dessous :\n\n   ```shell\n   Updating ghcr.io/actions-importer/cli:latest...\n   ghcr.io/actions-importer/cli:latest up-to-date\n   ```\n\n## Effectuer un audit de Azure DevOps\n\nVous pouvez utiliser la commande `audit` pour obtenir une vue générale de tous les projets d’une organisation Azure DevOps.\n\nLa commande `audit` effectue les étapes suivantes :\n\n1. Récupère tous les projets définis dans une organisation Azure DevOps.\n2. Convertit chaque pipeline en flux de travail équivalent GitHub Actions .\n3. Génère un rapport qui résume la façon dont l’exécution et la complexité d’une migration sont possibles avec GitHub Actions Importer.\n\n### Exécution de la commande d'audit\n\nPour effectuer un audit d’une organisation Azure DevOps, exécutez la commande suivante dans votre terminal :\n\n```shell\ngh actions-importer audit azure-devops --output-dir tmp/audit\n```\n\n### Inspection des résultats de l’audit\n\nLes fichiers dans le répertoire de sortie spécifié contiennent les résultats de l’audit. Consultez le fichier `audit_summary.md` pour obtenir un résumé des résultats de l’audit.\n\nLe résumé de l’audit comporte les sections suivantes.\n\n#### Pipelines\n\nLa section « Pipelines » contient des statistiques de haut niveau concernant le taux de conversion effectué par GitHub Actions Importer.\n\nVous trouverez ci-dessous quelques termes clés qui peuvent apparaître dans la section « Pipelines » :\n\n* Les pipelines **réussis** comportaient 100 % des composants du pipeline et des éléments individuels convertis automatiquement vers leur équivalent GitHub Actions.\n* ```\n            Les pipelines **partiellement convertis avec succès** ont vu toutes les constructions du pipeline converties, mais certains éléments individuels n'ont pas été convertis automatiquement vers leur équivalent GitHub Actions.\n  ```\n* Les pipelines **non pris en charge** sont des types de définition qui ne sont pas pris en charge par GitHub Actions Importer.\n* Les pipelines **ayant échoué** sont ceux qui ont rencontré une erreur irrécupérable lors de la conversion. Cela peut se produire pour l’une des trois raisons suivantes :\n  * Le pipeline a été mal configuré à l’origine et n’était pas valide.\n  * GitHub Actions Importer a rencontré une erreur interne lors de sa conversion.\n  * Une réponse réseau infructueuse a rendu le pipeline inaccessible, ce qui est souvent dû à des informations d’identification non valides.\n\n#### Étapes de génération\n\nLa section « Étapes de génération » contient une vue d’ensemble des étapes de génération individuelles utilisées dans tous les pipelines, ainsi que le nombre d’étapes converties automatiquement par GitHub Actions Importer.\n\nVous trouverez ci-dessous quelques termes clés qui peuvent apparaître dans la section « Étapes de génération » :\n\n* Une étape de génération **connue** est une étape qui a été automatiquement convertie en action équivalente.\n* Une étape de génération **inconnue** est une étape qui n’a pas été automatiquement convertie en action équivalente.\n* Une étape de génération **non prise en charge** désigne une étape qui est soit :\n  * Fondamentalement non pris en charge par GitHub Actions.\n  * Configuré d’une manière incompatible avec GitHub Actions.\n* Une **action** est une liste des actions qui ont été utilisées dans les workflows convertis. Cela peut être important pour :\n  * Si vous utilisez GitHub Enterprise Server, collecte de la liste des actions à synchroniser avec votre instance.\n  * Définir une liste d’autorisation au niveau de l’organisation des actions utilisées. Cette liste d’actions est une liste complète d’actions que vos équipes de sécurité ou de conformité peuvent avoir besoin d’examiner.\n\n#### Tâches manuelles\n\nLa section « Tâches manuelles » contient une vue d’ensemble des tâches qui GitHub Actions Importer ne sont pas en mesure de se terminer automatiquement et que vous devez effectuer manuellement.\n\nVous trouverez ci-dessous quelques termes clés qui peuvent apparaître dans la section « Tâches manuelles » :\n\n* Un **secret** est un secret défini au niveau du dépôt ou de l’organisation, utilisé dans les pipelines convertis. Ces secrets doivent être créés manuellement dans GitHub Actions pour que ces pipelines fonctionnent correctement. Pour plus d’informations, consultez « [Utilisation de secrets dans GitHub Actions](/fr/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets) ».\n* Un **exécuteur auto-hébergé** désigne un libellé d'exécuteur référencé dans un pipeline converti qui ne correspond pas à un exécuteur hébergé par GitHub. Vous devez définir manuellement ces exécuteurs pour que ces pipelines fonctionnent correctement.\n\n#### Fichiers\n\nLa dernière section du rapport d’audit fournit un manifeste de tous les fichiers qui ont été écrits sur le disque pendant l’audit.\n\nÀ chaque fichier de pipeline correspond une série de fichiers inclus dans l’audit, notamment :\n\n* Le pipeline d’origine tel qu’il a été défini dans GitHub.\n* Toutes les réponses du réseau utilisées pour convertir le pipeline.\n* Le fichier de workflow converti.\n* Les traces de pile qui peuvent être utilisées pour résoudre les problèmes liés à une conversion de pipeline ayant échoué.\n\nDe plus, le fichier `workflow_usage.csv` contient une liste séparée par des virgules de l’ensemble des actions, secrets et exécuteurs qui sont utilisés par chaque pipeline converti avec succès. Cela peut être utile pour déterminer quels workflows utilisent quelles actions, quels secrets ou quels exécuteurs, et pour effectuer des révisions de sécurité.\n\n## Prévoir l'usage potentiel GitHub Actions\n\nVous pouvez utiliser la commande pour prévoir l’utilisation `forecast` potentielle GitHub Actions en calculant les métriques à partir des exécutions de pipeline terminées dans Azure DevOps.\n\n### Exécution de la commande de prévisions\n\nPour effectuer une prévision de l’utilisation potentielle GitHub Actions , exécutez la commande suivante dans votre terminal. Par défaut, GitHub Actions Importer inclut les sept jours précédents dans le rapport de prévision.\n\n```shell\ngh actions-importer forecast azure-devops --output-dir tmp/forecast_reports\n```\n\n### Inspection du rapport de prévision\n\nLe fichier `forecast_report.md` dans le répertoire de sortie spécifié contient les résultats de la prévision.\n\nVoici quelques termes clés qui peuvent apparaître dans le rapport de prévision :\n\n* Le **nombre de travaux** correspond au nombre total de travaux terminés.\n* Le **nombre de pipelines** correspond au nombre de pipelines uniques utilisés.\n* ```\n            Le **temps d’exécution** décrit le temps passé par un exécuteur sur un travail. Cette métrique peut être utilisée pour planifier le coût des GitHubexécuteurs hébergés.\n  ```\n\n  Cette métrique est liée au montant que vous devriez vous attendre à dépenser dans GitHub Actions. Cela varie en fonction du matériel utilisé pendant ces minutes. Vous pouvez utiliser la [GitHub Actions calculatrice de prix](https://github.com/pricing/calculator) pour estimer les coûts.\n* Les métriques de **temps de file d’attente** décrivent le temps passé par un travail à attendre qu’un exécuteur soit disponible pour l’exécuter.\n* Les métriques de **travaux simultanés** décrivent le nombre de travaux en cours d’exécution à un moment donné. Cette métrique peut être utilisée pour définir le nombre d’exécuteurs que vous devez configurer.\n\nEn outre, ces métriques sont définies pour chaque file d’attente d’exécuteurs dans Azure DevOps. C’est particulièrement utile s’il existe une combinaison d’exécuteurs hébergés ou auto-hébergés ou de machines à spécifications élevées ou faibles, afin que vous puissiez voir des métriques spécifiques à différents types d’exécuteurs.\n\n## Effectuer un test de migration\n\nVous pouvez utiliser la `dry-run` commande pour convertir un pipeline Azure DevOps en flux de travail équivalentGitHub Actions. Une exécution test crée les fichiers de sortie dans un répertoire spécifié, mais n’ouvre pas de demande de tirage pour migrer le pipeline.\n\nS’il existe quelque chose qui GitHub Actions Importer n’a pas été en mesure de convertir automatiquement, comme les étapes de génération inconnues ou un pipeline partiellement réussi, vous pouvez créer des transformateurs personnalisés pour personnaliser davantage le processus de conversion. Pour plus d’informations, consultez « [Extension de GitHub Actions Importer avec des transformateurs personnalisés](/fr/actions/reference/github-actions-importer/custom-transformers) ».\n\n### Exécution de la commande dry-run pour un pipeline de build\n\nPour effectuer une exécution sèche de migration de votre pipeline de build Azure DevOps vers GitHub Actions, exécutez la commande suivante dans votre terminal, en `pipeline_id` remplaçant par l’ID du pipeline que vous convertissez.\n\n```shell\ngh actions-importer dry-run azure-devops pipeline --pipeline-id :pipeline_id --output-dir tmp/dry-run\n```\n\nVous pouvez afficher les journaux du test et les fichiers de workflow convertis dans le répertoire de sortie spécifié.\n\n### Exécution de la commande dry-run pour un pipeline de mise en production\n\nPour effectuer une exécution sèche de la migration de votre pipeline de mise en production Azure DevOps vers GitHub Actions, exécutez la commande suivante dans votre terminal, en `pipeline_id` remplaçant par l’ID du pipeline que vous convertissez.\n\n```shell\ngh actions-importer dry-run azure-devops release --pipeline-id :pipeline_id --output-dir tmp/dry-run\n```\n\nVous pouvez afficher les journaux du test et les fichiers de workflow convertis dans le répertoire de sortie spécifié.\n\n## Effectuer une migration en production\n\nVous pouvez utiliser la commande `migrate` pour convertir un pipeline Azure DevOps et ouvrir une pull request avec le flux de travail équivalent GitHub Actions.\n\n### Exécution de la commande migrate pour un pipeline de build\n\nPour migrer un pipeline de build Azure DevOps vers GitHub Actions, exécutez la commande suivante dans votre terminal, en remplaçant la valeur par l’URL `target-url` de votre GitHub référentiel et `pipeline_id` par l’ID du pipeline que vous convertissez.\n\n```shell\ngh actions-importer migrate azure-devops pipeline --pipeline-id :pipeline_id --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate\n```\n\nLa sortie de la commande inclut l’URL de la pull request qui ajoute le workflow converti à votre référentiel. Voici un exemple de sortie réussie :\n\n```shell\n$ gh actions-importer migrate azure-devops pipeline --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --azure-devops-project my-azure-devops-project\n[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'\n[2022-08-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'\n```\n\n### Exécution de la commande migrate pour un pipeline de déploiement\n\nPour migrer un pipeline de mise en production Azure DevOps vers GitHub Actions, exécutez la commande suivante dans votre terminal, en remplaçant la valeur par l’URL `target-url` de votre GitHub référentiel et `pipeline_id` par l’ID du pipeline que vous convertissez.\n\n```shell\ngh actions-importer migrate azure-devops release --pipeline-id :pipeline_id --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate\n```\n\nLa sortie de la commande inclut l’URL de la pull request qui ajoute le workflow converti à votre référentiel. Voici un exemple de sortie réussie :\n\n```shell\n$ gh actions-importer migrate azure-devops release --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --azure-devops-project my-azure-devops-project\n[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'\n[2022-08-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'\n```\n\n### Inspection de la demande de tirage\n\nLa sortie d’une exécution réussie de la commande `migrate` contient un lien vers la nouvelle demande de tirage qui ajoute le workflow converti à votre dépôt.\n\nVoici quelques éléments importants de la demande de tirage :\n\n* Dans la description de la demande de tirage, une section appelée **Étapes manuelles**, qui liste les étapes que vous devez effectuer manuellement avant de pouvoir terminer la migration de vos pipelines vers GitHub Actions. Par exemple, cette section peut vous indiquer de créer des secrets utilisés dans vos workflows.\n* Fichier de workflows converti. Sélectionnez l’onglet **Fichiers changés** dans la demande de tirage pour afficher le fichier de flux de travail à ajouter à votre référentiel GitHub.\n\nUne fois que vous avez terminé d’inspecter la demande de tirage, vous pouvez la fusionner pour ajouter le flux de travail à votre référentiel GitHub.\n\n## Informations de référence\n\nCette section contient des informations de référence sur les variables d’environnement, les arguments facultatifs et la syntaxe prise en charge lors GitHub Actions Importer de la migration à partir de Azure DevOps.\n\n### Variables d’environnement de configuration\n\nGitHub Actions Importer utilise des variables d’environnement pour sa configuration d’authentification. Ces variables sont définies lors du processus de configuration au moyen de la commande `configure`. Pour plus d’informations, consultez la section [Configuration des informations d’identification](#configuring-credentials).\n\nGitHub Actions Importerutilise les variables d’environnement suivantes pour vous connecter à votre instance de Azure DevOps :\n\n* `GITHUB_ACCESS_TOKEN`: Le personal access token (classic) utilisé pour créer des pull requests avec un workflow converti (nécessite l’autorisation `workflow`).\n* `GITHUB_INSTANCE_URL`: URL de l’instance cible GitHub (par exemple, `https://github.com`).\n* `AZURE_DEVOPS_ACCESS_TOKEN`\n  personal access token: utilisé pour s’authentifier auprès de votre instance de Azure DevOps. Ce jeton nécessite les étendues suivantes :\n  * Build : `Read`\n  * Pools d’agents : `Read`\n  * Code : `Read`\n  * Version publiée : `Read`\n  * Connexions de service : `Read`\n  * Groupes de tâches : `Read`\n  * Groupe de variables : `Read`\n* `AZURE_DEVOPS_PROJECT` : Nom du projet ou GUID à utiliser lors de la migration d’un pipeline. Si vous souhaitez effectuer un audit sur tous les projets, elle est facultative.\n* `AZURE_DEVOPS_ORGANIZATION` : nom de l’organisation de votre instance de Azure DevOps.\n* `AZURE_DEVOPS_INSTANCE_URL` : URL de l’instance de Azure DevOps, telle que `https://dev.azure.com`.\n\nCes variables d’environnement peuvent être spécifiées dans un fichier `.env.local` qui est chargé par GitHub Actions Importer lors de son exécution.\n\n### Arguments facultatifs\n\nVous pouvez utiliser des arguments facultatifs avec les sous-commandes GitHub Actions Importer pour personnaliser votre migration.\n\n#### `--source-file-path`\n\nVous pouvez utiliser l’argument `--source-file-path` avec les sous-commandes `forecast`, `dry-run` ou `migrate`.\n\nPar défaut, GitHub Actions Importer extrait le contenu du pipeline à partir du contrôle de code source. L’argument `--source-file-path` indique à GitHub Actions Importer d'utiliser à la place le chemin d’accès du fichier source spécifié.\n\nPar exemple :\n\n```shell\ngh actions-importer dry-run azure-devops pipeline --output-dir ./output/ --source-file-path ./path/to/azure_devops/pipeline.yml\n```\n\n#### `--config-file-path`\n\nVous pouvez utiliser l’argument `--config-file-path` avec les sous-commandes `audit`, `dry-run` et `migrate`.\n\nPar défaut, GitHub Actions Importer extrait le contenu du pipeline à partir du contrôle de code source. L’argument `--config-file-path` indique à GitHub Actions Importer d’utiliser les fichiers sources spécifiés à la place.\n\nL’argument `--config-file-path` peut également être utilisé pour spécifier le référentiel vers lequel un workflow réutilisable ou une action composite converti doit être migré.\n\n##### Exemple d'Audit\n\nDans cet exemple, GitHub Actions Importer utilise le fichier de configuration YAML spécifié comme fichier source pour effectuer un audit.\n\n```shell\ngh actions-importer audit azure-devops pipeline --output-dir ./output/ --config-file-path ./path/to/azure_devops/config.yml\n```\n\nPour auditer une instance Azure DevOps à l’aide d’un fichier de configuration, le fichier de configuration doit être au format suivant et chaque `repository_slug` doit être unique :\n\n```yaml\nsource_files:\n  - repository_slug: azdo-project/1\n    path: file.yml\n  - repository_slug: azdo-project/2\n    paths: path.yml\n```\n\nVous pouvez générer le `repository_slug` pour un pipeline en combinant le nom de l’organisation Azure DevOps, le nom du projet et l’ID de pipeline. Par exemple : `my-organization-name/my-project-name/42`.\n\n##### Exemple d’exécution test\n\nDans cet exemple, GitHub Actions Importer utilise le fichier de configuration YAML spécifié comme fichier source pour effectuer une exécution sèche.\n\nLe pipeline est sélectionné en faisant correspondre le `repository_slug` dans le fichier de configuration à la valeur de l’option `--azure-devops-organization` et `--azure-devops-project`.\n`path` est ensuite utilisé pour tirer (pull) le fichier source spécifié.\n\n```shell\ngh actions-importer dry-run azure-devops pipeline --output-dir ./output/ --config-file-path ./path/to/azure_devops/config.yml\n```\n\n##### Spécifier le référentiel des workflows réutilisables convertis et des actions composites\n\nGitHub Actions Importer utilise le fichier YAML fourni à l’argument `--config-file-path` pour déterminer le référentiel vers lequel les flux de travail réutilisables convertis et les actions composites sont migrés.\n\nPour commencer, vous devez exécuter un audit sans l’argument `--config-file-path` :\n\n```shell\ngh actions-importer audit azure-devops --output-dir ./output/\n```\n\nLa sortie de cette commande contient un fichier nommé `config.yml` qui contient une liste de tous les flux de travail réutilisables et actions composites qui ont été converties par GitHub Actions Importer. Par exemple, le fichier `config.yml` peut avoir le contenu suivant :\n\n```yaml\nreusable_workflows:\n  - name: my-reusable-workflow.yml\n    target_url: https://github.com/octo-org/octo-repo\n    ref: main\n\ncomposite_actions:\n  - name: my-composite-action.yml\n    target_url: https://github.com/octo-org/octo-repo\n    ref: main\n```\n\nVous pouvez utiliser ce fichier pour spécifier le référentiel et la référence auxquels un workflow réutilisable ou une action composite doit être ajouté. Vous pouvez ensuite utiliser l’argument `--config-file-path` pour fournir le `config.yml` fichier à GitHub Actions Importer. Par exemple, vous pouvez utiliser ce fichier lors de l'exécution d'une commande `migrate` pour ouvrir une pull request à chaque dépôt unique défini dans le fichier de configuration.\n\n```shell\ngh actions-importer migrate azure-devops pipeline --config-file-path config.yml --target-url https://github.com/my-org/my-repo\n```\n\n### Syntaxe prise en charge pour les pipelines Azure DevOps\n\nLe tableau suivant montre les types de propriétés que GitHub Actions Importer est actuellement en mesure de convertir.\n\n| Azure Pipelines      | GitHub Actions                                                                                                                             | Statut                       |\n| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------- |\n| condition            | <ul><li>`jobs.<job_id>.if`</li><li>`jobs.<job_id>.steps[*].if`</li></ul>                                                                   | Pris en charge               |\n| conteneur            | <ul><li>`jobs.<job_id>.container`</li><li>`jobs.<job_id>.name`</li></ul>                                                                   | Pris en charge               |\n| intégration continue | <ul><li>`on.<push>.<branches>`</li><li>`on.<push>.<tags>`</li><li>`on.<push>.paths`</li></ul>                                              | Pris en charge               |\n| tâche                | <ul><li>`jobs.<job_id>`</li></ul>                                                                                                          | Pris en charge               |\n| pullRequest          | <ul><li>`on.<pull_request>.<branches>`</li><li>`on.<pull_request>.paths`</li></ul>                                                         | Pris en charge               |\n| étape                | <ul><li>`jobs`</li></ul>                                                                                                                   | Pris en charge               |\n| étapes               | <ul><li>`jobs.<job_id>.steps`</li></ul>                                                                                                    | Pris en charge               |\n| stratégie            | <ul><li>`jobs.<job_id>.strategy.fail-fast`</li><li>`jobs.<job_id>.strategy.max-parallel`</li><li>`jobs.<job_id>.strategy.matrix`</li></ul> | Pris en charge               |\n| délaiEnMinutes       | <ul><li>`jobs.<job_id>.timeout-minutes`</li></ul>                                                                                          | Pris en charge               |\n| variables            | <ul><li>`env`</li><li>`jobs.<job_id>.env`</li><li>`jobs.<job_id>.steps.env`</li></ul>                                                      | Pris en charge               |\n| déploiement manuel   | <ul><li>`jobs.<job_id>.environment`</li></ul>                                                                                              | Partiellement pris en charge |\n| pool                 | <ul><li>`runners`</li><li>`self hosted runners`</li></ul>                                                                                  | Partiellement pris en charge |\n| services             | <ul><li>`jobs.<job_id>.services`</li></ul>                                                                                                 | Partiellement pris en charge |\n| stratégie            | <ul><li>`jobs.<job_id>.strategy`</li></ul>                                                                                                 | Partiellement pris en charge |\n| Déclencheurs         | <ul><li>`on`</li></ul>                                                                                                                     | Partiellement pris en charge |\n| pullRequest          | <ul><li>`on.<pull_request>.<tags>`</li></ul>                                                                                               | Non pris en charge           |\n| horaires             | <ul><li>`on.schedule`</li><li>`on.workflow_run`</li></ul>                                                                                  | Non pris en charge           |\n| Déclencheurs         | <ul><li>`on.<event_name>.types`</li></ul>                                                                                                  | Non pris en charge           |\n\nPour plus d’informations sur les tâches de Azure DevOps prises en charge, consultez le référentiel [`github/gh-actions-importer`](https://github.com/github/gh-actions-importer/blob/main/docs/azure_devops/index.md).\n\n### Correspondances des variables d’environnement\n\nGitHub Actions Importerutilise le mappage dans le tableau ci-dessous pour convertir les variables d’environnement par défaut Azure DevOps en équivalent le plus proche dans GitHub Actions.\n\n| Azure Pipelines                             | GitHub Actions                                      |\n| :------------------------------------------ | :-------------------------------------------------- |\n| `$(Agent.BuildDirectory)`                   | `${{ runner.workspace }}`                           |\n| `$(Agent.HomeDirectory)`                    | `${{ env.HOME }}`                                   |\n| `$(Agent.JobName)`                          | `${{ github.job }}`                                 |\n| `$(Agent.OS)`                               | `${{ runner.os }}`                                  |\n| `$(Agent.ReleaseDirectory)`                 | `${{ github.workspace}}`                            |\n| `$(Agent.RootDirectory)`                    | `${{ github.workspace }}`                           |\n| `$(Agent.ToolsDirectory)`                   | `${{ runner.tool_cache }}`                          |\n| `$(Agent.WorkFolder)`                       | `${{ github.workspace }}`                           |\n| `$(Build.ArtifactStagingDirectory)`         | `${{ runner.temp }}`                                |\n| `$(Build.BinariesDirectory)`                | `${{ github.workspace }}`                           |\n| `$(Build.BuildId)`                          | `${{ github.run_id }}`                              |\n| `$(Build.BuildNumber)`                      | `${{ github.run_number }}`                          |\n| `$(Build.DefinitionId)`                     | `${{ github.workflow }}`                            |\n| `$(Build.DefinitionName)`                   | `${{ github.workflow }}`                            |\n| `$(Build.PullRequest.TargetBranch)`         | `${{ github.base_ref }}`                            |\n| `$(Build.PullRequest.TargetBranch.Name)`    | `${{ github.base_ref }}`                            |\n| `$(Build.QueuedBy)`                         | `${{ github.actor }}`                               |\n| `$(Build.Reason)`                           | `${{ github.event_name }}`                          |\n| `$(Build.Repository.LocalPath)`             | `${{ github.workspace }}`                           |\n| `$(Build.Repository.Name)`                  | `${{ github.repository }}`                          |\n| `$(Build.Repository.Provider)`              | `GitHub`                                            |\n| `$(Build.Repository.Uri)`                   | `${{ github.server.url }}/${{ github.repository }}` |\n| `$(Build.RequestedFor)`                     | `${{ github.actor }}`                               |\n| `$(Build.SourceBranch)`                     | `${{ github.ref }}`                                 |\n| `$(Build.SourceBranchName)`                 | `${{ github.ref }}`                                 |\n| `$(Build.SourceVersion)`                    | `${{ github.sha }}`                                 |\n| `$(Build.SourcesDirectory)`                 | `${{ github.workspace }}`                           |\n| `$(Build.StagingDirectory)`                 | `${{ runner.temp }}`                                |\n| `$(Pipeline.Workspace)`                     | `${{ runner.workspace }}`                           |\n| `$(Release.DefinitionEnvironmentId)`        | `${{ github.job }}`                                 |\n| `$(Release.DefinitionId)`                   | `${{ github.workflow }}`                            |\n| `$(Release.DefinitionName)`                 | `${{ github.workflow }}`                            |\n| `$(Release.Deployment.RequestedFor)`        | `${{ github.actor }}`                               |\n| `$(Release.DeploymentID)`                   | `${{ github.run_id }}`                              |\n| `$(Release.EnvironmentId)`                  | `${{ github.job }}`                                 |\n| `$(Release.EnvironmentName)`                | `${{ github.job }}`                                 |\n| `$(Release.Reason)`                         | `${{ github.event_name }}`                          |\n| `$(Release.RequestedFor)`                   | `${{ github.actor }}`                               |\n| `$(System.ArtifactsDirectory)`              | `${{ github.workspace }}`                           |\n| `$(System.DefaultWorkingDirectory)`         | `${{ github.workspace }}`                           |\n| `$(System.HostType)`                        | `build`                                             |\n| `$(System.JobId)`                           | `${{ github.job }}`                                 |\n| `$(System.JobName)`                         | `${{ github.job }}`                                 |\n| `$(System.PullRequest.PullRequestId)`       | `${{ github.event.number }}`                        |\n| `$(System.PullRequest.PullRequestNumber)`   | `${{ github.event.number }}`                        |\n| `$(System.PullRequest.SourceBranch)`        | `${{ github.ref }}`                                 |\n| `$(System.PullRequest.SourceRepositoryUri)` | `${{ github.server.url }}/${{ github.repository }}` |\n| `$(System.PullRequest.TargetBranch)`        | `${{ github.event.base.ref }}`                      |\n| `$(System.PullRequest.TargetBranchName)`    | `${{ github.event.base.ref }}`                      |\n| `$(System.StageAttempt)`                    | `${{ github.run_number }}`                          |\n| `$(System.TeamFoundationCollectionUri)`     | `${{ github.server.url }}/${{ github.repository }}` |\n| `$(System.WorkFolder)`                      | `${{ github.workspace }}`                           |\n\n### Modèles\n\nVous pouvez transformer des modèles Azure DevOps avec GitHub Actions Importer.\n\n#### Limites\n\nGitHub Actions Importerest en mesure de transformer des modèles Azure DevOps avec certaines limitations.\n\n* Les modèles Azure DevOps utilisés sous les clés `stages`, `deployments` et `jobs` sont convertis en flux de travail réutilisables dans GitHub Actions. Pour plus d’informations, consultez « [Réutiliser des workflows](/fr/actions/how-tos/reuse-automations/reuse-workflows) ».\n* Azure DevOps modèles utilisés sous la clé `steps` sont convertis en actions composites. Pour plus d’informations, consultez « [Création d’une action composite](/fr/actions/tutorials/create-actions/create-a-composite-action) ».\n* Si vous disposez actuellement de modèles de travail qui référencent d’autres modèles de travail, GitHub Actions Importer convertit les modèles en flux de travail réutilisables. Étant donné que les flux de travail réutilisables ne peuvent pas référencer d’autres flux de travail réutilisables, il s’agit d’une syntaxe non valide dans GitHub Actions. Vous devez corriger manuellement les workflows réutilisables imbriqués.\n* Si un modèle fait référence à une organisation ou GitHub référentiel de Azure DevOps externe, vous devez utiliser l’option `--credentials-file` permettant de fournir des informations d’identification pour accéder à ce modèle. Pour plus d’informations, consultez « [Arguments et paramètres supplémentaires](/fr/actions/reference/github-actions-importer/supplemental-arguments-and-settings#using-a-credentials-file-for-authentication) ».\n* Vous pouvez générer dynamiquement YAML en utilisant des expressions `each` avec les inconvénients suivants :\n  * Les blocs `each` imbriqués ne sont pas pris en charge et entraînent la non-prise en charge du bloc `each` parent.\n  * `each` et les conditions contenues `if` sont évaluées au moment de la transformation, car GitHub Actions ne prennent pas en charge ce style d’insertion.\n  * Les blocs `elseif` ne sont pas pris en charge. Si cette fonctionnalité est requise, vous devez les corriger manuellement.\n  * Les blocs `if` imbriqués sont pris en charge, mais les blocs `if/elseif/else` imbriqués sous une condition `if` ne le sont pas.\n  * `if` blocs qui utilisent des variables Azure DevOps prédéfinies ne sont pas pris en charge.\n\n#### Modèles pris en charge\n\nGitHub Actions Importer prend en charge les modèles répertoriés dans le tableau ci-dessous.\n\n| Azure Pipelines                                                                     | GitHub Actions                            |                       Statut |\n| :---------------------------------------------------------------------------------- | :---------------------------------------- | ---------------------------: |\n| Extension à partir d’un modèle                                                      | `Reusable workflow`                       |               Pris en charge |\n| Modèles de travail                                                                  | `Reusable workflow`                       |               Pris en charge |\n| Modèles de phase                                                                    | `Reusable workflow`                       |               Pris en charge |\n| Modèles d’étape                                                                     | `Composite action`                        |               Pris en charge |\n| Groupes de tâches dans l’éditeur classique                                          | Variable                                  |               Pris en charge |\n| Modèles d’une organisation, d’un projet ou d’un référentiel différents Azure DevOps | Variable                                  |               Pris en charge |\n| Modèles dans un GitHub référentiel                                                  | Variable                                  |               Pris en charge |\n| Modèles de variables                                                                | `env`                                     |               Pris en charge |\n| Insertion conditionnelle                                                            | Conditions `if` sur le travail/les étapes | Partiellement pris en charge |\n| Insertion itérative                                                                 | Non applicable                            | Partiellement pris en charge |\n| Modèles avec paramètres                                                             | Variable                                  | Partiellement pris en charge |\n\n#### Noms du chemin de fichier des modèles\n\nGitHub Actions Importer peut extraire des modèles avec des chemins de fichiers relatifs ou dynamiques avec des expressions variables, de paramètres et itératives dans le nom de fichier. Toutefois, une valeur par défaut doit être définie.\n\n##### Exemple de nom de fichier de chemin variable\n\n```yaml\n# File: azure-pipelines.yml\nvariables:\n- template: 'templates/vars.yml'\n\nsteps:\n- template: \"./templates/$\"\n```\n\n```yaml\n# File: templates/vars.yml\nvariables:\n  one: 'simple_step.yml'\n```\n\n##### Exemple de nom de chemin de fichier de paramètre\n\n```yaml\nparameters:\n- name: template\n  type: string\n  default: simple_step.yml\n\nsteps:\n- template: \"./templates/${{ parameters.template }}\"\n```\n\n##### Exemple de nom de chemin de fichier itératif\n\n```yaml\nparameters:\n- name: steps\n  type: object\n  default:\n  - build_step\n  - release_step\nsteps:\n- ${{ each step in parameters.steps }}:\n    - template: \"$-variables.yml\"\n```\n\n#### Paramètres de modèle\n\nGitHub Actions Importer prend en charge les paramètres répertoriés dans le tableau ci-dessous.\n\n| Azure Pipelines                              | GitHub Actions               | Statut                       |\n| :------------------------------------------- | :--------------------------- | :--------------------------- |\n| string                                       | `inputs.string`              | Pris en charge               |\n| nombre                                       | `inputs.number`              | Pris en charge               |\n| booléen                                      | `inputs.boolean`             | Pris en charge               |\n| objet                                        |                              |                              |\n| `inputs.string` avec l’expression `fromJSON` | Partiellement pris en charge |                              |\n| étape                                        | `step`                       | Partiellement pris en charge |\n| listeDesÉtapes                               | `step`                       | Partiellement pris en charge |\n| tâche                                        | `job`                        | Partiellement pris en charge |\n| liste de tâches                              | `job`                        | Partiellement pris en charge |\n| déploiement                                  | `job`                        | Partiellement pris en charge |\n| liste de déploiement                         | `job`                        | Partiellement pris en charge |\n| étape                                        | `job`                        | Partiellement pris en charge |\n| listeDesÉtapes                               | `job`                        | Partiellement pris en charge |\n\n> \\[!NOTE]\n> Un modèle utilisé sous la clé `step` avec ce type de paramètre n'est sérialisé en tant qu'action composite que si les étapes sont utilisées au début ou à la fin des étapes du modèle. Un modèle utilisé sous les clés `stage`, `deployment` et `job` avec ce type de paramètre n’est pas transformé en workflow réutilisable, mais est sérialisé en tant que workflow autonome.\n\n## Mentions légales\n\nCertaines parties ont été adaptées à partir de <https://github.com/github/gh-actions-importer/> sous la licence MIT :\n\n```text\nMIT License\n\nCopyright (c) 2022 GitHub\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```"}