Accueil > .Net, Logiciels, Microsoft, TFS > [TFS 2010] Lancer un exécutable durant une build

[TFS 2010] Lancer un exécutable durant une build

Il y a quelques jours, je devais faire fonctionner une build, pour générer un package zip.
Jusque là, tout va bien.
Avec IIS Express (voir billet précédent : Les différents serveurs Web pour développer).
Et là, c’est le drame.

Déjà, je vais faire un gros spoil sur le reste du billet : ça marche pas.
Une histoire de communication difficile entre MSDeploy et IIS Express, de ce que j’en ai vu (je reviendrais peut être sur le sujet).

Mais cela m’a permit d’apprendre plusieurs choses : comment fonctionne une build sous TFS, comment modifier sa définition et son processus de génération et enfin, comment lancer un exécutable qui écoute (comprendre qui attend une action utilisateur pour s’arrêter), comme IIS Express.
C’est cette dernière partie que je vais traiter ici.
En effet, il y a une petite finesse quand le processus lancé écoute : il attend une réaction de l’utilisateur pour s’arrêter, ce qui empêche la build de passer à une autre étape.
Cela peut être utile, par exemple dans le cadre d’une build lançant des tests sur une application client/serveur.

En prérequis, pour comprendre le billet, c’est de savoir ce qu’est une build TFS et un workflow (et donc d’en avoir le vocabulaire, mais ce n’est réellement pas compliqué).
Pour cela, je vous invite à regarder directement sur la MSDN Team Development with Visual Studio Team Foundation Server : Chapter 7 – Team Build Explained et Chapter 13 – Process Templates Explained.

La première étape est de se placer sur la build TFS.
Dans le Team Explorer de Visual Studio, il suffit d’aller dans le projet souhaité, puis déplier l’entrée « Builds ».
Un clic droit sur la build que l’on veut modifier, puis « Modifier la définition de la build… » permet d’accéder à un nouvel écran.
TFS BUILD - Parallel - Modification de la définition de build

Sur cet écran, il est possible de voir la combobox indiquant « IISExpressBuildProcessTemplate.xaml ».
C’est le processus de build que va utiliser la build TFS, c’est à dire le workflow qu’elle va suivre, étape par étape.

En ouvrant le fichier en question, on obtient un éditeur XAML.
Dans le cas présent, j’avais besoin de lancer IIS Express durant le process de build à proprement parlé (c’est à dire quand la solution/le projet est compilé et appelle MSBuild.exe).
Dans la séquence par défaut, l’opération de build est la dernière séquence de la séquence « Run On Agent ».

Voici le process par défaut :
TFS BUILD - Parallel - Process de build par défaut

Le but du jeu, c’est d’ajouter une tâche « Parellel » juste au-dessus du « Try Compile, Test, and Associate Changesets and Work Items ».
Sur le Parallel, on ajoute une variable nommée « BuildFinished » et dans les propriétés du Parallel :
TFS BUILD - Parallel - Propriétés Parallel

En partie gauche, on fait un glisser-déposer de la séquence « Try Compile, Test, and Associate Changesets and Work Items ».
Dans cette séquence, on se place au sein du « Finally » pour assigner la variable « BuildFinished » à « True » :
TFS BUILD - Parallel - Try Compil Finally

En partie droite, on rajoute une séquence qui a cette tête :
TFS BUILD - Parallel - Ajout de la séuence IIS Express
La variable « ResultMessageIISExpress » appartient à minima à la séquence que j’ai nommée « IIS Express », elle est aussi utilisée dans le « Handle Error Output » pour remonter l’erreur dans le journal.
La section nommée « IIS Express » est de type InvokeProcess.
En argument, elle prend la même ligne d’arguments que si on lançait le process IIS Express à la mano. Là, je vous renvois directement ici : Running IIS Express from the Command Line
Ensuite, il suffit de faire pointer le FileName vers l’exécutable (« C:\Program Files (x86)\IIS Express\iisexpress.exe », chez moi) :
TFS BUILD - Parallel - Propriétés IIS Express

Au final, donc, on devrait avoir un Parallel qui a cette tête-là :
TFS BUILD - Parallel

On sauvegarde, on archive et on peut lancer la build.
Et dans le journal de build, on aura cet output :
TFS BUILD - Parallel - Journal

Et voilà.
Lorsque la build aura finie, elle changera l’assignation de BuildFinished pour True, ce qui aura pour cause d’arrêter le Parellel et donc de passer à l’étape suivante.

Catégories :.Net, Logiciels, Microsoft, TFS
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :