Intégration et déploiement continu avec TeamCity, Bitbucket et Azure, partie 2 : apprendre le Packaging,
Un tutoriel de Hinault Romaric

Le , par Hinault Romaric, Responsable .NET
Dans le précèdent billet de blog, vous avez configuré votre serveur d’intégration continue de telle sorte qu’il soit capable de fonctionner avec votre système de contrôle de version (Bitbucket).


Chaque fois qu’un commit est effectué, un trigger permet de détecter les changements dans le code source, et procéder à une build automatique du projet. A la suite de l’opération de build, le statut est publié sur Bitbucket, permettant ainsi aux développeurs de les visualiser sans qu’ils n’aient besoin de se connecter au serveur d’intégration continue.

Cependant, dans une démarche d’industrialisation du développement, on ne peut pas parler d’intégration continue sans évoquer le déploiement continu (CD, continuous delivery).

Mais, avant de déployer, nous devons d’abord créer un package de notre application. Dans cette deuxième partie de la série, nous verrons comment effectuer le packaging de notre solution.

La première chose à faire, c’est de vous assurer que Microsoft Web Deploy est installé sur le serveur sur lequel est disponible TeamCity. Sinon, procédez à l’installation de ce dernier.

Création d’un profil de publication

Dans Visual Studio, ouvrez votre solution, puis faites un clic droit sur votre projet dans l’explorateur de solutions et cliquez sur « Publier » dans le menu contextuel qui s’affiche.
Dans la fenêtre qui s’affiche :

  • cliquez sur « Personnaliser » dans la zone « Sélectionner une cible de publication » ;
  • entrez le nom du profil de publication dans la fenêtre qui s’affiche et cliquez sur le bouton « Ok » ;
  • dans la fenêtre qui s’affiche, déroulez la zone « Publish method » et sélectionnez « Web Deploy Package » ;
  • dans la zone de saisie « Package location », saisissez « $(SolutionDir)\artifacts\webdeploy\Integration\TeamCityTest.zip » ;
  • cliquez sur suivant, puis choisissez la configuration (Release ou Debug) ;
  • puis cliquez sur « Fermer », ensuite acceptez l’enregistrement des modifications qui ont été apportées à votre profil de publication.



Un fichier avec l’extension « pubxml » sera créé dans le dossier « Properties/PublishProfiles » de votre projet.

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?> 
<!-- 
Ce fichier est utilisé par le processus de publication/package de votre projet Web. Vous pouvez personnaliser le comportement de ce processus 
en modifiant ce fichier MSBuild. Pour en savoir plus à ce sujet, consultez la page http://go.microsoft.com/fwlink/?LinkID=208121.  
--> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
  <PropertyGroup> 
    <WebPublishMethod>Package</WebPublishMethod> 
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
    <LastUsedPlatform>Any CPU</LastUsedPlatform> 
    <SiteUrlToLaunchAfterPublish /> 
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> 
    <ExcludeApp_Data>False</ExcludeApp_Data> 
    <DesktopBuildPackageLocation>$(SolutionDir)\artifacts\webdeploy\Integration\TeamCityTest.zip</DesktopBuildPackageLocation> 
    <PackageAsSingleFile>true</PackageAsSingleFile> 
    <DeployIisAppPath>TeamCityTest</DeployIisAppPath> 
    <PublishDatabaseSettings> 
      <Objects xmlns="" /> 
    </PublishDatabaseSettings> 
  </PropertyGroup> 
</Project>

Commitez les modifications que vous avez apportées à votre projet. Avec ce nouveau profil de publication, lorsque TeamCity procèdera à la compilation de votre application, un package de déploiement sera généré et sauvegardé dans le répertoire que vous avez mentionné. La zone « Artifacts » dans la liste des résultats de vos build permettra désormais de voir les fichiers de déploiement qui ont été générés.

Mais, pour cela, vous devez apporter quelques modifications aux paramètres de configuration de votre build.

Modification des paramètres de build pour prendre en compte le déploiement

Revenez dans TeamCity. Ouvrez la page de configuration des paramètres de votre Buil. Dans le menu à gauche, cliquez sur « General Settings » et saisissez « artifacts\webdeploy\Integration=>Webdeploy » dans la zone « Artifact path »



Ce chemin doit être celui que vous avez défini précédemment dans les paramètres de votre profil de publication. Enregistrez les modifications.

Cliquez sur « Build Steps » dans le menu, puis modifiez votre Build Steep « Visual Studio (sln) ».

Dans la zone « Command line parameters », saisissez les informations suivantes et enregistrez les modifications :

/peployOnBuild=True
/publishProfile="PackageIntegration"
/profileTransformWebConfigEnabled=False



  • /peployOnBuild=True permet de signaler que vous souhaitez qu’un package soit généré à chaque build de votre application dans TeamCity ;
  • /publishProfile="PackageIntegration" est le profil de publication qui sera utilisé. Celui que vous avez créé précédemment ;
  • /profileTransformWebConfigEnabled=False permet de désactiver la transformation du fichier de configuration (WebConfig). En principe, la transformation se fait par WebDeploy.


Si vous procédez à la build de votre application dans TeamCity, vous verrez comme artifacts vos fichiers de déploiement :


Désormais, vous êtes prêt pour le déploiement. Dans la prochaine et dernière partie, nous verrons comment automatiser le déploiement sur Microsoft Azure. Restez connecter.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster un commentaire

Avatar de Hinault Romaric Hinault Romaric - Responsable .NET https://www.developpez.com
le 26/09/2016 à 20:08
Offres d'emploi IT
Responsable transverse - engagement métiers H/F
Safran - Ile de France - Corbeil-Essonnes (91100)
Expert décisionnel business intelligence H/F
Safran - Ile de France - Évry (91090)
Architecte systèmes études & scientifiques H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -