Rosario - Team Foundation Server - MSBuild + Workflow Foundation
La CTP 12 de Rosario (Team System VNext) étant maintenant disponible depuis quelques semaines, il est temps de se lancer à la découverte de ses nouvelles fonctionnalités.
La première que je vous propose de découvrir ici, fait partie des nouveautés de Team Build, le serveur / service de compilation disponible avec Team Foundation Server. Team Build est un service permettant d'éxécuter des scripts MSBuild sur un serveur distant, soit à la demande, soit de manière plannifiée (chaque soir a 2h du matin, sauf les vendredi...) ou soit en mode intégration continue après chaque archivage.
Dans les versions 2005 / 2008 de TFS, un assistant permet de générer un script MSBuild de base, largement suffisant dans 80% de cas, réalisant les actions suivantes:
- Extraction des sources depuis Team Foundation Source Control, en s'appuyant sur une solution (sln) cible
- Marquage de celle-ci avec une étiquette (label) en utilisant le numéro de Build (NomBuild_AAAAMMJJ.NumUnique)
- Compilation
- Exécution des tests unitaires
- Exécution d'une analyse statique du code
- Déploiement du résultat de la compilation (DLL, EXE, site web) sur un partage (share) cible
- Génération d'un rapport de compilation (envoie par Email)
Le seul problème avec ceci, c'est que lorsque l'on veut étendre le script, il faut obligatoirement mettre la main directement dans MSBuild, ce qui demande un petit temps d' adaptation et n'est pas très "user friendly" vu qu'il s'agit de modifier de l'XML:
Avec Rosario, le système de définition de Build a été totalement revu, et s'appuit dorénavant sur Workflow Foundation pour définir les différentes étapes. Chaque action devient donc une activité WF et, pour modifier le script, il suffit de changer l'ordre ou la liste des activités présentes dans le script par défault, en s' appuyant sur celles proposées par Rosario. Le tout de manière complètement graphique directement depuis Visual Studio grâce à la fonctionnalité de rehosting de designer offerte par WF.

Le mode d'accès à l'assistant de modification des builds reste inchangé vis à vis des versions actuelles.
Par contre, un nouvel onglet "Process" fait son apparition dans la fenêtre de configuration de Build. Celui-ci est composé de trois zone:
- A gauche, la zone de modélisation du Workflow de Build
- A droite en haut, la liste des activitées disponibles, pouvant être glissées-déposées
- A droite en bas, la zone de configuration des propriétées de chaque activitée
L'extensibilité devient aussi simplifiée, pour ajouter une étape / action, il suffit d'écrire une activité WF (finit les importtask et compagnie donc) et de la déployer sur le serveur de Build.
Hormis la simplicité de modélisation, cela va va apporter de plus la possibilité de paralléliser l'éxécution d'un script de Build sur plusieurs machines et la simplification du debuggage des process de build.
En temps que fan de Team System et de Workflow Foundation, je ne peux que me réjouir de tout ceci :)