Intégration continue et Team Foundation Server (2/2)

Dans un premier article nous avons pu voir ce qu’est l’intégration continue, une bonne pratique recommandée en particulier par les méthodologies agiles visant à l’amélioration de la qualité du produit mais qui peut avoir un impact important au niveau de l’équipe de développement.
Nous allons maintenant nous intéresser aux solutions logicielles qui vont nous permettre d’implémenter cette bonne pratique et notamment Team Foundation Server.

Les outils

Comme nous l’avons dit précédemment, l’un des éléments essentiel pour faire de l’intégration continue est une solution logicielle. Par chance, il existe un grand nombre d’outils permettant de faire de l’intégration continue.

Parmi eux on retrouvera Hudson, Jenkins, TeamCity, toute la gamme de produit CruiseControl, Apache Gump, Continuum… Grâce à ces outils on pourra faire de l’intégration continue dans tous les langages, aussi bien Java que .Net, en passant par Php, Perl, Python…

Ces différents produits fourniront de manière globale les fonctionnalités de :

  • Déploiement continu
  • Test continu
  • Génération de rapports
  • Interface Web
  • Dashboard
  • Support d’outils tiers

De plus, on peut étendre l’intégration continue aux bases de données. Puisqu’aujourd’hui une partie importante de la logique métier des applications se déplace vers les bases de données sous la forme de procédures stockées, il est tout à fait cohérent de vouloir implémenter l’intégration continue à ce niveau également. RedGate est le principal acteur sur ce marché avec sa solution SQL Toolbelt qui offrira des outils tels que SQL Source Control pour le versionnement ou SQL Compare pour la comparaison de schémas. RedGate propose de nombreux outils aussi bien autour de Microsoft SQL Server que de Oracle.

L’offre de Microsoft pour l’intégration continue s’axe en deux parties, d’un côté l’automatisation des tests et de l’autre Team Foundation Server.

L’automatisation des tâches sous .Net

Du côté de l’automatisation, on retrouvera deux acteurs principaux, à savoir MSBuild et NAnt.

NAnt, version .Net d’Ant, possède un certain nombre d’avantage par rapport à MSBuild. Tout d’abord, il est multiplateforme, ce qui signifie qu’on pourra l’utiliser par exemple pour déployer un site web sur plusieurs environnements comme Apache ou IIS. Il s’intègre également très bien avec NUnit et NDoc ainsi qu’avec les solutions open source d’intégration continue comme Hudson ou CruiseControl.

MSBuild pour sa part est l’outil « de base » offert par Microsoft, inclus dans Visual Studio depuis la version 2005. Son utilisation est extrêmement simple puisque généralement transparente. On peut cependant éditer ces fichiers de script, qui se reconnaissent via leur extension .proj.

Voici un exemple de script MSBuild:


<Project DefaultTargets = "Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<!-- On définit le nom du projet en tant que propriété -->
<PropertyGroup>
<appname>NomDuProjet</appname>
</PropertyGroup>
<!-- On définit les fichiers à inclure -->
<ItemGroup>
<CSFile Include = "fichier.cs"/>
</ItemGroup>
<Target Name = "Compile">
<!-- On va compiler les fichiers de type C# (dans le cadre d’un projet C#) -->
<CSC
Sources = "@(CSFile)"
OutputAssembly = "$(appname).exe">
<!-- On assigne l’attribut OutputAssembly de la tâche avec la valeur de l’exécutable qui sera créé -->
<Output
TaskParameter = "OutputAssembly"
ItemName = "EXEFile" />
</CSC>
<!-- On log le nom du fichier obtenu -->
<Message Text="Le fichier obtenu est @(EXEFile)"/>
</Target>
</Project>

Team Foundation Server

Team Foundation Server est une solution très complète proposée par Microsoft pour faire notamment :

  • Gestion de Projet
  • Gestion de prérequis
  • Versionnement de code source
  • Gestion de cas de test
  • Automatisation de build
  • Génération de rapports

On notera que ce sont les quatre derniers items de cette liste qui vont nous permettre de mettre en place l’intégration continue avec TFS.

On notera aussi l’existence de Team Foundation Build qui est intégré à Team Foundation Server et qui se base sur MSBuild. On pourra ainsi créer des « agents » dans Team Foundation qui se chargeront d’exécuter un certain nombre de taches à des moments définis. Il génèrera également des rapports permettant d’avoir plus d’informations sur les différents résultats obtenus par ces agents.

Il est possible d’intégrer Team Foundation Server avec de nombreux produits Microsoft dont notamment Project, Project Server, Sharepoint… En effet, TFS dévoile son potentiel lorsqu’on l’intègre avec d’autres outils, le premier étant Visual Studio. Voici quelques combinaisons:

Produit

Résultat

Visual Studio
  • Accès au panneau Team Explorer et à une Interface web dédiée au projet
  • Tâches assignées et création de nouvelles tâches
  • Rapports de build
  • Templates de document
SharePoint
  • Création automatique de sites et de wiki à la création d’un projet
Project Server
  • Mis à jour automatique des tâches et des diagrammes
Excel
  • Possibilité de charger des listes de tâches

Implémenter l’intégration continue dans TFS

Dans cette section nous allons voir comment configurer TFS pour faire de l’intégration continue.

Tout d’abord il faut préciser que la gestion des droits et des utilisateurs se base sur Active Directory et ne sera pas abordée ici. Nous assumerons donc que nous avons les droits nécessaires pour chaque action.

Configuration du service de Build de TFS

Il est nécessaire de configurer le service de Build de TFS avant de pouvoir mettre en place l’intégration continue :

Depuis Team Foundation Server Administration Console (TfsMgmt.exe), cliquez sur Build ConfigurationPour démarrer l’assistant de configuration, cliquez sur Start WizardIci, rien à faire à part cliquer sur NextOn choisit la collection de projets, ici celle par défaut. Cliquez maintenant sur NextOn configure maintenant le service de build, avec le nombre d’agents, etc… On utilisera les paramètres par défaut.Entrez maintenant les informations du compte censé exécuter le serviceConfirmez les paramètres : l’assistant termine  

Configuration de l’intégration continue dans Visual Studio

L’intégration continue dans TFS se configure depuis Visual Studio même, en définissant de nouveaux Builds :

Ouvrez l’onglet Team Explorer avec Ctrl+W, Ctrl+M ou via le bouton indiqué ci-dessousDans l’onglet Team Explorer, connectez-vous à votre projet
Ouvrez la fenêtre de connexion au serveur

Choisissez le serveur. Une fois les projets chargés, sélectionnez les projets à consulter et cliquez sur Connect

Création d’un projet

Etant donné qu’aucun projet n’existe, nous allons en ajouter un :

  1. Faites un clic droit sur la collection de projets et cliquez sur New Team Project
  2. Entrez le nom et la description du projet
  3. Sélectionnez un Process Template, cela influencera les rapports disponibles, le site créé avec SharePoint, etc… Il est également possible de télécharger différents template
  4. Confirmez les paramètres
  5. Le projet est visible depuis le Team Explorer, avec tous les Work Items, les requêtes et les builds

Création d’un build

Une fois que vous êtes connecté à votre projet, faites un clic droit sur le projet et sélectionnez Team Builds puis New Build DefinitionLa définition du build se fera en six étapes :

  1. Général où vous allez définir le nom du build et sa description, ici « New Build 1 » 
  2. Trigger où vous définirez les déclencheurs de build. Notez l’option Continuous Intégration 😉
  3. Workspace où vous sélectionnerez le workspace. Nous ne ferons pas de changement ici.
  4. Build Defaults où vous allez choisir quel agent exécutera le build, c’est-à-dire le serveur qui se chargera du build. Vous allez également choisir l’emplacement réseau où sera laissé le build
  5. Process où vous allez définir notamment le type de build (Debug ou Release) ainsi que les projets à utiliser
  6. Retention Policy où vous allez configurer le comportement de TFS vis-à-vis des divers build qui vont se créer. Nous pourrons les garder ou les supprimer, selon le contexte (taille du build et fréquence)

Le build est maintenant configuré et prêt à l’emploi.

Déclencher un build

Nous pourrons cependant éditer manuellement le fichier .proj ou déclencher un build.

Pour éditer le fichier .proj utilisé par MSBuild et surtout TfsBuild comme nous l’avons vu auparavant, faites un clic droit sur le build et cliquer sur View Configuration Folder qui ouvrira la fenêtre du Source Control d’où vous pourrez accéder au fichier .proj

Pour déclencher un build, depuis le team explorer, retrouvez le build qui vient d’être créé et faites un clic droit dessus.

Sélectionnez Queue New Build

Sélectionnez l’agent qui lancera le build

Il ne reste qu’à cliquer sur Queue pour ajouter le build à la liste. Il sera exécuté lorsque son tour viendra ou immédiatement s’il n’y a pas d’autre build en cours.

Une fois les différents build créés et configurés depuis TFS et Visual 2010, ils seront visibles par tous les membres de l’équipe. L’intégration continue est en place !

Cet article conclut notre série sur l’intégration continue et Team Foundation Server. Vous devriez être en mesure maintenant de configurer votre serveur et votre environnement de développement de manière à pouvoir implémenter cette bonne pratique.

Je vous encourage toutefois à explorer les diverses options qu’offre TFS, notamment au niveau des déclencheurs de build. A bientôt!

Nombre de vue : 829

COMMENTAIRES 4 commentaires

  1. Nicolas Kyriazopoulos-Panagiotopoulos dit :

    Le lien vers le 1er article est cassé, il faut remplacer avec http://blog-rec.soat.fr/2012/07/integration-continue-et-team-foundation-server-12/ ;))

  2. Didier Menut dit :

    Merci Nicolas, c’est réparé !

  3. […] en place des builds sous TFS est disponible sur ce même blog. Je vous invite à aller le lire : http://blog-rec.soat.fr/2012/08/integration-continue-et-team-foundation-server-22/. Néanmoins, je reviendrai sur la partie concernant l’automatisation des taches  dans un […]

  4. ALAIN dit :

    Bonjour,

    Je vous remercie pour votre blog, j’aimerai savoir quels sont les droits affectés aux comptes services, et qui ne sont pas abordés dans ce tuto?

    Merci

AJOUTER UN COMMENTAIRE