[Team Build 2010] Tips sur la création d’une nouvelle activité de build

En attendant la sortie de la RTM de Visual Studio / Team Foundation Server 2010 je continue à jouer “occasionnellement” (à qui je vais faire croire que c’est occasionnel? :-)) avec la Release Candidate.

Vous le savez déjà (j’espère ;-)): la grande nouveauté au niveau des Builds dans TFS 2010 c’est le fait qu’elles sont maintenant réalisées à l’aide de la techno Workflow Foundation. Je ne vais pas revenir en détails sur le fonctionnement général, ni sur les avantages que cela apporte, vous pouvez lire des choses à ce sujet ici et ici.

Auparavant, l’ordonnancement des tâches qui permettait d’obtenir en un seul clic : compilation, packaging, labelisation, documentation, déploiement et j’en passe grâce à Team Build était réalisé avec MSBuild (le même langage qui est utilisé dans la plupart des fichiers projets de vos solutions Visual Studio comme par exemple les .csproj). Un fichier MSBuild est schématiquement un ensemble de tâches MSBuild appelées sequentiellement. Si les tâches standards ne suffisent pas, on peut créer les siennes les déployer sur le serveur, les référencer dans le fichier MSBuild et les utiliser.

Avec Team Build 2010, le pendant de ce méchanisme d’extensibilité est identique à la différence prêt qu’on ne créé plus des tâches MSBuild personnalisées, mais des activités de workflow de build. Il y a déjà des articles régidés sur le sujet pour comprendre comment créer ces activités et quoi écrire pour que ça marche (ici par exemple).

Par contre on peut rencontrer quelques soucis lorsqu’on l’on souhaite utiliser la nouvelle activité. Si on est téméraire, on ouvre le fichier DefaultTemplate.xaml à partir de notre workspace local et on tente un Drag&Drop. Normalement, ça ne marche pas :)

En cherchant un peu on se rend compte que pas mal de gens mettent le fichier Xaml dans le même projet que l’activité pour que l’ajout au workflow fonctionne. Une fois que l’on sait ça, ni une, ni deux, on ajoute le fichier xaml au projet qui contient l’activité et là : magie, le Drag&Drop marche, on voit notre activité dans le workflow et on est content.

C’est alors que l’on décide de tester notre workflow Team Build tout neuf dans le serveur de build. Cela est très simple à réaliser, il suffit de :

  • Créer un répertoire dans le contrôle de code source dans lequel on dépose l’assembly contenant l’activité (j’ai bien dit le contrôle de code source et pas un répertoire windows)
  • Préciser au contrôleur de build qu’il doit aller chercher les assemblies des activités personnalisées dans le répertoire en question
  • Ajouter le workflow dans le contrôle de code source ou mettre à jour le fichier DefaultTemplate.xaml
  • Lancer la build

Et là… Team Build nous indique gentillement qu’il ne trouve pas l’assembly contenant l’activité. Pourquoi ?

<Je ne suis pas un expert WF mais…>

En jettant un coup d’oeil au fichier .xaml après avoir ajouté mon activité, j’ai découvert qu’il ajoutait bien une référence dans le noeud racine de la définition XML du workflow. Le problème c’est qu’il référence l’activité en utilisant le Namespace uniquement, sans préciser l’assembly. Ce qui explique que cela fonctionne dans le projet, mais pas dans le serveur de build ! Alors évidemment, on peut modifier le fichier XAML à la main pour mettre à jour la référence mais on perd l’utilisation de l’éditeur graphique de Visual Studio…

La solution *la plus simple* que j’ai trouvée, c’est de créer un autre projet vierge dans lequel je référence le projet contenant l’activité et ajoute le fichier XAML à éditer. De ce fait, la référence qu’il créé est complète et cela fonctionne sur le serveur de build. VICTOIRE ! ;-)

</Je ne suis pas un expert WF mais…>

Pour synthétiser voici ce que j’ai mis en place. Une solution contenant :

  • Un projet qui contient mes activités de builds
  • Un projet qui référence le premier projet et qui contient mes fichiers XAML uniquement dans le but de les éditer

image

 

 

 

 

 

 

 

 

Et là, tout fonctionne correctement ! :)

.Dispose();

Publié lundi 5 avril 2010 13:05 par Etienne Margraff
Classé sous ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: [Team Build 2010] Tips sur la création d’une nouvelle activité de build @ mardi 6 avril 2010 10:11

Bonjour Etienne,

Je n'ai pas encore touché à WF dans TFS donc je me demande ce qu'est ce DefaultTemplate...

Il contient quoi exactement? Pourquoi une activité dépend de lui?...

Oui je sais ça en fait des question, mais je crois que je tombe amoureux de TFS ;)

JeremyJeanson

# re: [Team Build 2010] Tips sur la création d’une nouvelle activité de build @ mercredi 7 avril 2010 13:52

Bonjour Jérémy,

Il s'agit d'un workflow standard qui effectue les actions classiques d'intégration continue (compilation, exécution de tests, couverture de code, etc.)

L'activité ne dépend pas de lui, ici je parle de la création d'une nouvelle activité permettant d'enrichir le comportement de ce workflow :)

Etienne Margraff

# re: [Team Build 2010] Tips sur la création d’une nouvelle activité de build @ mercredi 7 avril 2010 16:23

Bonjour Etienne,

Ok ;)

Si le designer utilisé pour designer ce Workflow est "Complet" on doit pouvoir jouer avec la liste des "Imports" pour insérer la référence sans ouvrir le fichier Xaml à la main. Cela pourrait te servir si tu as besoin d'activités qui sont dans un autre assembly.

(Imports se trouve ne bas de Designer, à côté des listes "Variables" et "Arguments")

@+

JeremyJeanson


Les 10 derniers blogs postés

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01

- SharePoint Online: Script PowerShell pour supprimer une colonne dans tous les sites d’une collection par Blog Technique de Romelard Fabrice le 11-27-2018, 18:01