Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[TFS 2010] Développer sa propre activité de processus de build

Depuis la version 2010, le processus de build de Team Foundation Server a évolué pour utiliser maintenant WF 4 au lieu de ce bon vieux MSBuild.

Ainsi, si l’on souhaite modifier le processus de build, il “suffit” de développer une activité WF 4 et de l’utiliser dans le workflow de build. Pour créer son activité, rien de plus simple: on créé un nouveau projet de type “WF Activity Library” et on rajoute une “Code Activity”:

   1: public sealed class HelloWorldActivity : CodeActivity
   2: {
   3:     [Browsable(true)]
   4:     [DefaultValue(null)]
   5:     public InArgument<IBuildDetail> CurrentBuild { get; set; }
   6:  
   7:     public OutArgument<string> Result { get; set; }
   8:  
   9:     protected override void Execute(CodeActivityContext context)
  10:     {
  11:         string requestedBy = this.CurrentBuild.Get(context).RequestedBy;
  12:  
  13:         context.SetValue(this.Result, "Hello Build Requested By: " + requestedBy);
  14:     }
  15: }

Comme vous pouvez le voir, mon activité est relativement simple: elle prend en paramètres un objet de type IBuildDetail et elle possède un paramètre de retour, de type chaine de caractères.

Dans la méthode Execute, on récupère les informations sur la build en cours et on affecte, au paramètre Result, le nom de la personne qui a demandé la build. Ca y est, notre activité est prête, nous pouvons à présent l’utiliser dans le workflow Smile

On commence par l’ajouter à la boite à outils:

image

Attention, pour pouvoir l’ajouter à votre Toolbox, il faut l’ajouter, dans la fenêtre “Choose Toolbox Items” aux activités proposées dans l’onglet “System.Activities Components”:

image

Puis on la fait glisser/déposer dans le designer du workflow de build:

image

Comme notre activité manipule un paramètre en entrée, il est nécessaire de lui donner une valeur. Ainsi, dans les propriétés de l’activité, on peut renseigner la valeur “BuildDetail” pour la propriété “CurrentBuild”:

image

C’est terminé Smile On sauvegarde et on lance une build: dans le log, on pourra constater que notre activité a correctement été appelée Wink

image

Et voila, c’est simple, rapide et très efficace ! Bien sur, l’exemple pris ici est relativement simple mais rien ne vous empêche de faire plus complexe avec, par exemple, des activités asynchrones (AsyncCodeActivity), des activités renvoyant des valeurs (CodeActivity<TResult>), etc..

Note: Ce n’est pas parce que TFS 2010 utilise WF 4 pour le processus de build que vous allez devoir réécrire tous vos scripts MSBuild. En effet, Microsoft a prévu une activité nommée MSBuild qui, comme son nom l’indique, permet d’exécuter une tâche MSBuild au sein d’un workflow de build Wink

image

 

Bon build à tous Smile

 

A+

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 :
Posted: jeudi 19 novembre 2009 10:49 par Thomas LEBRUN
Classé sous : , ,

Commentaires

davidrei a dit :

Très bon post, très belle initiative :)

J'ai justement commencé à regarder le nouveau moteur de build basé sur WF pour définir un template d'intégration continu pour SharePoint avec des custom activities. A terme on pourrait avoir un template avec ses activities (custom?) pour chaque type de build on inté continu.

Bref excellent :)

# novembre 19, 2009 11:50

azra a dit :

Impossible de drag n drop ma fucking custom activity depuis la toolbox vers la zone de conception, une idée pourquoi? (les activitées de base, je peux le faire).

# février 24, 2010 10:07

Thomas LEBRUN a dit :

Wé, j'ai eu le cas quand je faisais mes tests. D'après mes sourvenirs, c'est parce que la version qui est dans la toolbox n'est pas la même que celle de la gac.

Pour régler le pb, essayer de supprimer ton activité de la toolbox, réenregistre la DLL dans la GAC et réajoute l'activité dans la toolbox.

# février 24, 2010 10:25
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Office 365: Comment exporter tous les comptes Azure Active Directory ayant une license via PowerShell par Blog Technique de Romelard Fabrice le 05-17-2018, 13:46

- PowerShell: Comment avoir le Country Name depuis un Country Code par Blog Technique de Romelard Fabrice le 05-17-2018, 13:20

- Office 365: Comment supprimer un compte externe d’un site SharePoint Online en mode Extranet par Blog Technique de Romelard Fabrice le 05-11-2018, 17:00

- Office 365: Comment reconfigurer le lien “Bloc-notes” d’un teamsite par Blog Technique de Romelard Fabrice le 05-09-2018, 16:45

- Office 365: Utiliser l’option “Alert Me” de la page de résultat de recherche par Blog Technique de Romelard Fabrice le 05-09-2018, 14:57

- Office 365: Comment télécharger l’image de profil de Delve par Blog Technique de Romelard Fabrice le 05-09-2018, 14:28

- Office 365: Valeur “Country or Region” et “User Location” dans Azure AD par Blog Technique de Romelard Fabrice le 05-04-2018, 12:08

- Office 365: Menu d’administration non visible dans une page SharePoint par Blog Technique de Romelard Fabrice le 05-04-2018, 11:50

- Office 365: Comment avoir un minimum de statistiques d’usage de votre site SharePoint Online par Blog Technique de Romelard Fabrice le 05-04-2018, 11:41

- Office 365: Reconfigure la gestion des demande d’accès dans SharePoint par Blog Technique de Romelard Fabrice le 05-04-2018, 10:41