2010-11-08 33 views
2

Je comprends que je peux écrire ma propre activité personnalisée (en C#) pour exécuter une logique personnalisée pendant le processus de construction. Ma compréhension est que Powershell peut également être utilisé, mais je ne sais pas où il s'intègre. Je comprends Powershell est utilisé pour exécuter des commandes en ligne de commande, mais comment et où l'utiliser pour personnaliser le processus de construction?TFS Build - Powershell ou une activité personnalisée?

Merci

Répondre

4

La décision d'utiliser ou Powershell une activité personnalisée est pour moi en fonction de qui est responsable. Si vous avez une activité créée par le maître de construction (pour TFS) et donc réutilisable pour toutes les équipes de l'organisation, je crée une activité personnalisée.

Si l'équipe de projet est responsable (par exemple un script de déploiement), j'utilise la PowerShell. Je crée un argument dans lequel l'équipe peut entrer le chemin du script powershell à exécuter pour le déploiement. L'équipe de projet peut éventuellement choisir d'entrer une valeur dans cet argument. L'équipe de projet peut également gérer son script de déploiement PowerShell sans l'aide du maître de construction.

Donc en bref:

  • Une activité réutilisable: activité personnalisée
  • Activité pour l'équipe seulement: Powershell
+0

Donc, essentiellement, un script powershell est un substitut pour les activités personnalisées et il semble que les deux servent le même but. Puis-je mélanger et associer PS et les activités? Puis-je invoquer un script PS à partir d'une activité personnalisée? – DotnetDude

+0

Dans l'activité personnalisée, vous avez accès à tous les arguments et variables de la construction. Ce n'est donc pas un substitut. Vous pouvez l'utiliser mélangé. –

+0

Pour appeler le script PS, le plus simple est d'ouvrir le modèle de processus de génération et d'ajouter un nouvel argument au modèle de processus de construction pour transmettre le script souhaité. Ajoutez une activité convertWorkspace pour convertir le chemin d'un chemin contrôlé par version vers le chemin local. Ajoutez ensuite une nouvelle activité InvokeProcess qui exécute Powershell avec l'argument "@". –

1

Pour moi, Powershell est le chemin à parcourir. Voici mes raisons pour lesquelles:

  1. Script Indépendance:

Vous obtenez l'indépendance de script en utilisant cette approche. Exemple: J'ai un certain nombre de scripts exécutés après la construction (la compilation) processus est terminé:

  • Instantiate Database
  • Déployer le code de base de données
  • déployer des applications Web
  • contrôler le déploiement
  • Exécuter des tests d'acceptation

Tout ce qui précède peut être lancé, débogué et testé indépendamment sans devoir faire la queue nouvelle construction.

  1. Powershell est facile de travailler avec:

ensembles personnalisés ont tendance à ajouter beaucoup de complexité et squames à la solution. Exemple: La mise à niveau de TFS 2010 à TFS 2012 a été très douloureuse, car tous les modèles de construction ont été cassés. Nous avons dû recompiler tous nos assemblages personnalisés, et seul un développeur de l'équipe savait comment TFS Build était configuré pour exécuter nos activités personnalisées. J'ai récemment supprimé tous les assemblys personnalisés de nos modèles de construction et j'utilise Powershell exclusivement.

J'ai personnalisé mes modèles de processus pour appeler un script PowerShell défini par l'utilisateur une fois la compilation TFS terminée. Je fais ceci en utilisant un argument de chemins dans la définition de construction. Cet argument est simplement un tableau de chaînes pointant vers les scripts. Je suis d'accord avec Ewald, ci-dessus, que TFS ne passe pas les arguments de construction aux scripts.Pour résoudre ce problème, dans mon modèle de flux de travail, j'analyse chaque script dans le tableau de chaînes et remplace les jetons bien connus par les arguments de génération - par ex. @ (BuildNumber), @ (SourcesDirectory) etc. Je trouve que c'est une solution très facile et solide.