image

Déploiement automatisé avec TFS 2012 (Partie 1)

Nous avons vu précédemment comment intégrer les modifications de schémas d’une base de données dans un process d’intégration continue, la prochaine étape naturelle après la mise en place d’un processus est d’arriver à automatiser le déploiement d’une application directement depuis une build.

Le principe est simple : arriver à déployer une build en un seul click que cela soit vers un environnement de tests ou un environnement de production.

image

TFSDeployer est un projet CodePlex qui permet de mettre en place cela assez simplement.

Le principe est simple, TFS permet de définir des indicateurs qualité de builds :

image

TFSDeployer permet de s’abonner au changement d’indicateur qualité sur une build et de déclencher un script batch ou un script powershell lors de changement.

Vous pouvez ainsi récupérer toutes les informations nécessaires sur la build en question et lancer votre script de déploiement.

Exemple : Un testeur va sur la fiche de la build qu’il souhaite tester, sélectionne la qualité “Ready for Initial Test”, et automatiquement la build se déploie sur son environnement de tests.

Pour l’installation de TFSDeployer et la préparation des scripts je vous laisse soin de suivre les instructions sur les pages dédiées :

Une fois la solution déployée, il vous faut donc définir votre processus déploiement.

Cela se fait en deux étapes :

  • La définition des déploiement
  • L’écriture de script de déploiement

Mise à jour d’un logiciel client

Commençons par le cas le plus simple, la mise à jour d’un poste client. Pour cela une build spécifique existe nous allons donc créer une définition de déploiement qui permettra de déployer sur une machine de test.

Pour cela créer le fichier xml adéquat (comme indiqué dans la doc) et le placer dans le contrôleur de code source.

Dans mon cas, plusieurs testeurs interviennent sur les différents projets et disposent de leurs propres environnements de tests (machines physiques ou VM).

J’ai donc commencé par créer un indicateur de qualité de build par personne :

image

Le fichier de définition des déploiements a été créé en conséquence :

image

Comme vous pouvez le constater, j’ai opté pour l’utilisation de scripts batch traditionnels et non de scripts Powershell.

J’ai également ajouté un paramètre de script additionnel “ScriptParameter” qui me permet d’indiquer le nom de la machine sur laquelle je souhaite déployer ma build.

Passons maintenant à la création du script en lui-même.

Pour comprendre comment créer des scripts de déploiement et récupérer les différents arguments, rendez-vous dans le dossier Samples de TFSDeployer vous y trouverez toutes les infos nécessaires.

Exemple pour un .bat :

image

Pour la copie vers la machine de tests, il suffit donc de faire une “simple copie” de fichiers à ceci près qu’il faut la faire sur une machine distante.

copy %1*.* C:LoginspaceAdb.net

C:LoginspaceAdb.net étant un chemin fixe d’installation du client WPF.

Pour cela deux possibilités :

  • On créé un partage réseau (ou on utilise un existant du type NomMachineC$ ) et on effectue directement la copie comme ceci.
  • Autre solution plus exotique mais vraiment très intéressante et très puissante : l’utilisation d’un super outil de Sysinternals nommé “PsExec”

PsExec

PsExec est un outil en ligne de commande de SysInternals qui permet de lancer des process sur des machines distantes sans prendre la main dessus :

image

Par exemple, nous sommes capable d’effectuer un ipconfig sur une machine distante nommée “Froggiestation” depuis la machine « Patrice-Tablet” et même de récupérer les résultats de cette exécution via la simple ligne de commande présente ci-dessus.

Nous allons donc utiliser cette technique pour effectuer la copie des fichiers assez simplement :

image

L’exécution de cette ligne de code effectuera la copie de fichiers non pas depuis la machine d’exécution du script mais depuis la machine passée en paramètre dans le script.

Ainsi le « C:LoginspaceAdb.net pourra dynamiquement être celui de la machine “VMDovadisChristine” ou “VMDovadisSandrine” ou autre en fonction des infos définies dans la définition du déploiement.

Une fois ce script fait il faudra le placer dans un fichier “DeployToTestEnvironment.cmd” en source control à côté de cette définition pour automatiquer le lancer lors du changement de la qualité d’une build.

Nous verrons ensuite dans la deuxième partie en quoi psexec peut nous permettre d’aller beaucoup plus loin dans l’automatisation de ces déploiements.

Dans les prochaines parties nous verrons en effet comment déployer les mises à jour de schéma de bases de données,  et comment déployer un service Windows (avec arrêt et démarrage à distance).

Stay tuned !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *