J'ai deux solutions dans leur dossier correspondant, par exemple :
SolutionA\SolutionsA.sln
SolutionB\SolutionB.sln
Chaque solution a une compilation Check-in sécurisée configurée ; c'est-à-dire deux définitions de compilation GatedSolutionA et GatedSolutionB.
Maintenant, la situation est la suivante : si je fais des modifications dans les deux dossiers en même temps, TFS affiche une boîte de dialogue pour sélectionner la compilation (menu déroulant avec GatedSolutionA, GatedSolutionB) à exécuter contre le changement. Mon changement provoque des erreurs dans la solution B et des modifications sans erreur dans la Solution A. Autrement dit, la compilation GatedSolutionB échouera mais GatedSolutionA réussira.
Lorsque je sélectionne GatedSolutionA pour compiler contre mes modifications, TFS les valide, ce qui laisse la solution B dans un état cassé et le but de la validation sécurisée est vain pour la solution B.
Si je change le déclencheur en CI pour les définitions de compilation, TFS met en file d'attente les deux compilations.
Ce que je cherche, c'est le même comportement, c'est-à-dire que toutes les compilations sécurisées sont mises en file d'attente et si l'une d'elles échoue, le changement doit être rejeté.
Remarque : Je ne veux pas créer une seule définition de compilation pour les deux solutions. De plus, je sais que nous pouvons éviter que ce problème ne se produise en créant deux modifications séparées, mais cela arrive généralement lorsque les développeurs ne sont pas conscients qu'ils ont des fichiers à valider pour une solution autre que celle sur laquelle ils travaillent.
Mise à jour 2019
Puisque TFS et Azure DevOps ont commencé à utiliser GIT et les Pull Requests - en utilisant des politiques de branche (sur la branche master), on peut ajouter plus d'une vérification de compilation, par exemple pour les modifications dans le chemin SolutionA\*
, la compilation A peut être configurée pour être mise en file d'attente et vérifiée, et de même pour les modifications dans le chemin SolutionB\*
, la compilation B peut être configurée pour être mise en file d'attente et vérifiée, et par conséquent, pour un commit ayant des modifications dans les deux chemins, les deux compilations seront mises en file d'attente pour vérification. L'attente pour l'utilisation de GIT en valait la peine.
Politiques de branche : https://learn.microsoft.com/en-us/azure/devops/repos/git/branch-policies?view=azure-devops#build-validation
Remarque : la documentation n'est pas mise à jour pour afficher le filtre de chemin, et un défaut est signalé sur GitHub ici https://github.com/MicrosoftDocs/vsts-docs/issues/3235. En tant que tel, le filtre est disponible dans Azure DevOps et Server.