Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment personnaliser le plan de modernisation généré par GitHub Copilot modernisation pour migrer des applications Java et .NET vers Azure.
Vous pouvez lancer une session de modernisation en créant un plan sur le rapport d’évaluation par le biais de problèmes de sélection multiple, ou en cliquant sur Migrate pour Azure pour créer et exécuter un plan de modernisation à partir de la barre latérale. Lorsque vous lancez une session de modernisation, GitHub Copilot génère un fichier plan.md (et un fichier complémentaire .metadata/tasks.json) qui décrit l’objectif de migration, l’étendue, l’architecture actuelle et cible et la liste des tâches. Cette paire de fichiers sert de plan que l’agent de modernisation exécute. Vous pouvez affiner le plan avant l’exécution pour mieux répondre aux besoins de votre projet.
Une fois l’agent généré plan.md, il s’ouvre automatiquement dans l’éditeur de Visual Studio Code. À ce stade, vous pouvez passer en revue et personnaliser le plan pour vous assurer qu’il s’aligne sur vos objectifs de modernisation spécifiques.
Important
Personnalisez le plan en demandant à Copilot de régénérer ou de mettre à jour le plan plutôt qu’en modifiant directement plan.md manuellement. Les modifications directes de plan.md ne mettent pas à jour le fichier complémentaire tasks.json qui pilote l'exécution, et les deux fichiers peuvent dériver de la synchronisation. Le modèle recommandé dans chaque section ci-dessous est « indiquez Copilot quoi changer, puis laissez-le régénérer ».
Exemple de structure de fichiers plan.md
L’agent génère un fichier plan.md avec les sections suivantes. La même structure est utilisée pour les projets Java et .NET.
| Rubrique | Purpose | Personnalisable par instruction |
|---|---|---|
| En-tête du projet | Nom du projet et titre de la modernisation. | Oui : ajustez le titre pour refléter la vague ou l’étendue. |
| Cadre technique | Langage actuel, framework, outil de génération, base de données et dépendances clés détectés à partir du code source. | Indirectement : corrigez les faits mal détectés en invitant Copilot. |
| Aperçu | Description narrative de l’objectif de modernisation : ce qui change, pourquoi et l’approche par phases. Destiné aux professionnels, sans détails techniques. | Oui : clarifier l’intention métier, ajouter ou supprimer des puces. |
| Résumé de l’impact sur la migration | Une table mappant chaque application × service d’origine → nouveau service Azure, méthode d’authentification et commentaires. | Oui : modifier le service cible, modifier l’authentification, ajouter ou supprimer des lignes. |
| Questions ouvertes et questionnaire | Questions de clarification soulevées lors de la création du plan et réponses de l’utilisateur. Détermine la sélection des tâches. | Oui : répondre aux questions ouvertes, réviser les réponses préalables. |
La liste des tâches détaillée n’est pas dans plan.md. Elle se trouve dans .metadata/tasks.json et est générée à partir de vos réponses dans la section Questions ouvertes et questionnaire, ainsi que de l’analyse de l’agent. Pour modifier les tâches, invitez Copilot à régénérer le plan (consultez Comment personnaliser).
Éléments personnalisables
Le plan de modernisation expose quatre surfaces de personnalisation. Chacune correspond à une section de plan.md et est accessible via une invite adressée à Copilot plutôt que par une modification directe.
1. Étendue de modernisation
L’étendue détermine les types de tâches générés par l’agent. Le plan prend en charge quatre types d’étendue :
- Upgrade : mises à niveau des versions du runtime et du framework (par exemple, JDK 11 → 17, Spring Boot 2.x → 3.x, .NET Framework → .NET 8).
- Migration à Azure : en remplaçant un service local ou non Azure par un équivalent Azure (par exemple, Oracle → Azure Database pour PostgreSQL, ActiveMQ → Azure Service Bus, secrets codés en dur → Azure Key Vault).
- Conteneurisation : génération d’un fichier Dockerfile et d’artefacts de build associés.
- Deployment : génération de fichiers de déploiement et déploiement sur Azure. Les tâches de déploiement incluent implicitement la conteneurisation.
Pour personnaliser l’étendue, indiquez Copilot quels types d’étendue s’appliquent à cette exécution. Par exemple:
For this modernization plan, only include Upgrade and Migration to Azure tasks. Do not generate containerization or deployment tasks — those are handled by a separate pipeline.
2. Cibler les services Azure et l’authentification
La table Migration Impact Summary enregistre le service cible Azure et la méthode d’authentification pour chaque composant migré. Personnalisez ces valeurs en invitant Copilot avant ou après la génération du plan initial. Par exemple:
Update the Migration Impact Summary:
- Use Azure Container Apps as the deployment target, not Azure Kubernetes Service.
- Use Managed Identity for the PostgreSQL connection. Do not use Key Vault for the DB password.
- Migrate file-based logging to Azure Monitor (Application Insights), not to console-only.
L’agent régénère plan.md et tasks.json afin que la liste des tâches reste cohérente avec le tableau.
3. Réponses au questionnaire
Lorsque l’agent dispose de la fonctionnalité ask_user, il pose un court questionnaire pour définir le périmètre du plan. Les trois questions par défaut sont les suivantes :
| Question | Réponse par défaut | Effet sur le plan |
|---|---|---|
| Cible de déploiement sur Azure | Aucun déploiement | Ajoute (ou omet) une tâche de déploiement et sélectionne le service de calcul cible (Azure Container Apps, Azure Kubernetes Service, Azure App Service, App Service Managed Instance, Azure Function Apps, Azure Static Web Apps). |
| Inclure des tests d’intégration ? | Non | Lorsque la valeur est « Oui, Intégration locale avec conteneurs » ou « Oui, Intégration locale et tests de fumée », ajoute une tâche de test d’intégration après les tâches de migration et avant la conteneurisation. |
| Inclure la conteneurisation (génération d’un Dockerfile) ? | Non | Ajoute une tâche de conteneurisation autonome. Ignoré automatiquement si une tâche de déploiement est sélectionnée, car le déploiement couvre la conteneurisation. |
Si l'agent n'a pas posé de question (par exemple, parce que ask_user n'était pas disponible) ou si vous souhaitez modifier une réponse antérieure, invitez Copilot. Par exemple:
Update the plan with these answers:
- Deployment target: Azure Container Apps
- Integration testing: Yes, Local Integration and Smoke Tests
- Containerization: handled by deployment task, no standalone containerization needed
Les réponses sont enregistrées comme des éléments cochés dans la section Questions ouvertes & questionnaire et déterminent la sélection des tâches.
4. Ajouter, supprimer ou affiner des tâches spécifiques
Vous pouvez demander Copilot d'ajouter une tâche qui n'a pas été générée, de supprimer une tâche souhaitée ou d'ajuster l'étendue d'une tâche existante. Invitez le intent : laissez Copilot choisir la compétence et le modèle correspondants à partir de sa base de connaissances.
Exemples :
Add a task to migrate from ActiveMQ to Azure Service Bus.
Drop the integration test task — we have an existing test suite that covers this.
The Spring Boot upgrade task should target Spring Boot 3.2 specifically, not "latest".
Note
L’agent ne crée des tâches que pour les migrations pour lesquelles il possède une compétence ou un motif correspondant. Si vous demandez une migration que l’agent ne peut pas prendre en charge (par exemple, un service propriétaire interne), il ajoute un avertissement à la section étendue et la tâche n’est pas ajoutée. Dans ce cas, traitez la migration en tant qu’étape manuelle et ajoutez une instruction Guidelines (voir la section suivante) pour la documenter.
Guide pratique pour personnaliser : inviter Copilot à régénérer
Utilisez le flux de travail suivant :
- Passez en revue le
plan.mdinitial après que l’agent l’a généré. - Identifiez ce que vous souhaitez modifier : étendue, service cible, authentification, réponses de questionnaire ou tâches spécifiques.
- Invitez Copilot avec la modification. Soyez spécifique : nommez la section et le résultat souhaité.
- Laissez Copilot régénérer
plan.mdet.metadata/tasks.jsonensemble. Les deux fichiers doivent rester alignés pour que l’exécution fonctionne. - Réexécrire le plan mis à jour. Itérer jusqu’à ce que l’étendue, l’architecture cible et la liste des tâches correspondent à votre intention.
Exemple de prompt de bout en bout :
Update the modernization plan with these changes:
1. Add Migration to Azure scope for messaging — migrate ActiveMQ to Azure Service Bus.
2. Use Managed Identity for all Azure service connections; do not introduce Key Vault.
3. Deployment target is Azure Container Apps.
4. Include Layer 1 and Layer 2 integration tests.
5. The Spring Boot upgrade task should explicitly include the JDK 17 and Jakarta EE migration in its description, as a single task (do not split).
Copilot régénère le plan, met à jour le tableau, enregistre les réponses du questionnaire et révise la liste des tâches en conséquence.
Fournir des instructions pour l’exécution
En plus de l’étendue et des tâches, fournissez des Copilot avec des guidelines — méthodologie, conventions, outils et règles — qui régissent la façon dont la modernisation est exécutée. Ajoutez des instructions le plus souvent sous forme de Guidelines section dans le plan ou en tant que références aux fichiers de règle locale.
Incluez toutes les instructions qui vous aident à guider la façon dont Copilot modifie le code, par exemple :
- Contraintes ou interdictions concernant certaines approches de migration (par exemple, n'introduisez pas les starters Spring Cloud Azure ; utilisez les SDK natifs).
- Exigences de style de code ou de convention.
- Les liens vers des fichiers internes, de la documentation ou des scripts que l’agent peut accéder.
- Les connaissances de domaine sont utiles pour résoudre les erreurs ou effectuer des migrations.
- Conditions requises pour la façon dont l’agent doit annoter ou commenter les modifications du code.
- Instructions de nettoyage pour les artefacts temporaires créés pendant l’exécution.
Exemple :
Add these guidelines to the plan:
- Use Azure Managed Identity for every Azure service connection. Do not introduce connection strings or Key Vault secrets unless a service has no Managed Identity support.
- Follow the code conventions defined in `/docs/internal/code-style.md`.
- Provide detailed comments explaining why each code change is necessary.
- After execution, remove any temporary scripts or scratch files created during migration.