2010-05-12 14 views
4

Nous devons être en mesure de déployer quelques services Windows sur la machine distante dans le cadre d'une construction. Il s'agit d'une compilation nocturne qui déploie l'ensemble de l'application dans l'environnement TEST, de sorte qu'elle doit être automatisée en quelque sorte.TFS 2010: Comment déployer un service Windows dans le cadre d'une build?

Pour le projet Web MSDeploy peut être utilisé, ainsi que pour les serveurs de base de données. Mais qu'en est-il des services Windows? Ils doivent être arrêtés (s'ils sont déjà installés) sur la machine cible, puis les binaires doivent être copiés, le service doit être enregistré (s'il n'a pas déjà été installé), etc, etc ...

+0

Avez-vous déjà trouver une réponse pour cela? J'essaie de faire la même chose et mon google-fu me manque. – Koby

Répondre

1

Vous pouvez utiliser MSDeploy pour cela. Il existe un fournisseur runCommand qui exécute la commande spécifiée sur l'ordinateur de destination.

msdeploy.exe -verb:sync -source:runCommand="net start MyService" -dest:auto 

Vous pouvez en lire plus ici: http://technet.microsoft.com/en-us/library/ee619740(WS.10).aspx

+0

Il y a beaucoup plus de choses à faire pour que cela fonctionne avec TFS –

1

Notre méthode pour y parvenir est un petit service web fonctionnant sur nos serveurs qui surveille un certain répertoire pour de nouveaux fichiers. Notre build déploie les services Windows à ce dossier avec un nom temporaire, puis les renommer en un modèle de nom surveillé ("servicename.deployservice.zip") le service de déploiement va prendre un tel fichier, le décompresser à un emplacement temporaire et effectue les étapes nécessaires pour le déploiement (par exemple, arrêter un ancien service, désinstaller un ancien service, installer un nouveau service, démarrer un nouveau service). Si vous devez transporter des actions spéciales, vous pouvez ajouter une DLL de code de déploiement ou un "script de génération" dans le fichier ZIP de déploiement. La manière la plus simple d'accomplir un tel code de déploiement avec le plus générique est un service qui attend simplement une installation (msi ou autre) dans le fichier zip et l'exécute. De cette façon, vous pouvez simplement ajouter une configuration de déploiement à votre projet et avoir beaucoup moins à faire dans votre Teambuild ...

1

En supposant que vous utilisez VS 2010 et TFS 2010, vous pouvez modifier le workflow de construction pour ajouter une activité ExecuteProcess (à l'intérieur d'une activité AgentScope pour le serveur cible) pour exécuter svcutil.exe en spécifiant le nom de votre service.