Vous ne pouvez certainement écrire une activité de workflow personnalisé pour la file d'attente d'une construction pour une définition de construction. Cette activité doit être une activité de code et accepte le nom de la définition de génération que vous souhaitez mettre en file d'attente.
Pour écrire le code qui interagit avec votre serveur TFS pour mettre en file d'attente une génération, vous pouvez utiliser les API de l'assembly Microsoft.TeamFoundation.Build.Client. En outre, Jim Lamb a blogué sur la création d'activités personnalisées pour la construction here.
En détails, votre code doit faire les étapes suivantes:
- crée l'objet TfsTeamProjectCollection pour vous connecter à votre collection de projets d'équipe.
- Récupère l'objet IBuildServer. C'est l'entrée principale. De là, vous pouvez obtenir la définition de construction, créer une requête de construction, mettre en queue une construction, etc.
Je suis vraiment surpris qu'il n'y ait pas d'exemple pour la version 2010 quand j'ai essayé de chercher "tfs par programmation créer une build ". Je vais probablement bloguer à ce sujet. Une chose à faire à ce sujet, cependant, que la construction mise en file d'attente de votre activité personnalisée sera mise en file d'attente par le compte de service de construction, vous devez donc vous assurer que ce compte a la bonne construction de file d'attente. Par défaut, lorsqu'il est ajouté au groupe TFS Build Services Accounts, je ne pense pas qu'il l'ait été.
MISE À JOUR:
Ewald Hofman vient d'écrire une série sur TFS Build, dont parle de faire l'usurpation d'identité d'une activité personnalisée. Il est parfait pour vos besoins:
http://www.ewaldhofman.nl/post/2010/05/28/Customize-Team-Build-2010-e28093-Part-9-Impersonate-activities-(run-under-other-credentials).aspx
J'ai aussi trouvé que Taylor Lafrine blogué sur la création d'un programme de construction dans son poste en 2009:
http://blogs.msdn.com/b/taylaf/archive/2009/12/04/introducing-tfs-impersonation.aspx
it helps.
Merci beaucoup! Je vais essayer ceci – monkzen
@Duat Le savez-vous ce que je peux faire quand je fais la queue beaucoup construit l'un après l'autre et chacun dépend d'un autre? Mon problème est que, la construction est mise en file d'attente de manière asynchrone, mais je veux attendre une construction. Des idées? – Rookian
Vous pouvez certainement bloquer votre thread qui met en attente la construction et attendre jusqu'à ce que la construction est terminée. Ce dont vous avez besoin est d'obtenir l'objet IQueuedBuild et attendez que la propriété Status soit Completed ou Canceled. Notez que la demande de construction peut être reportée, alors gardez un œil sur cela, vous pouvez choisir d'attendre ou d'annuler si la demande de construction est reportée. –