Créer un fichier Zip de déploiement dans une définition de build

Pour déployer une application web sur un serveur IIS ou dans une Web App Azure, une des méthodes consiste à créer un fichier zip de déploiement.
Ce fichier zip contient les fichiers de l’application web mais aussi les données servant au déploiement tels que la chaîne de connexion ou des mots de passe.
Le but de cet article est de voir comment une build VSTS (ou TFS 2015) va générer ce fichier zip pour des projets, qu’ils aient besoin d’être compilés ou non.

Créer le zip avec compilation de Visual Studio

Pour un projet qui nécessite une compilation, dans la définition de build on utilise la tâche « Visual Studio Build », celle-ci compile la solution et crée le zip de déploiement qui contient les fichiers à déployer.

vstsbuild msbuid

Dans le paramètre MsBuild Arguments mettre les paramètres : /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true
Si l’on veut copier ce zip dans le répertoire de drop, dans la tache de build « Copy Files », renseigner la propriété « Contents », avec la valeur **\bin\$(BuildConfiguration)\*.zip

vstsbuild copy files

Ainsi seuls les fichiers ayant l’extension zip seront copiés dans le répertoire de drop.

Créer le zip en utilisant une tâche Gulp

Pour d’autre projets qui ne nécessitent pas de compilation, comme par exemple un projet nodejs, une application SPA ou une extension pour VSTS qui ne sont composés que de code html, javascript et css, il n’y a pas besoin d’utiliser une tâche de compilation. La génération du fichier zip va ici être faite par une tache Gulp. Pour plus d’informations sur gulp, voir la doc sur github.

Ajouter un fichier gulpfile.js à la racine de votre projet (exemple). Celui-ci contient la tâche qui permet de créer un zip.
Dans ce fichier compléter la variable packagePath avec la liste des répertoires et fichiers à inclure au zip, ainsi que ceux à exclure.

var packagePaths = ['**/css/**','**/scripts/*.js','**/images/**','**/index.html',
 '!**/_package/**',
 '!**/typings/**',
 '!typings',
 '!_package',
 '!gulpfile.js']

Dans le fichier package.json, qui référence l’ensemble des dépendances de notre projet, rajouter la référence à la tâche Gulp.

{
 "name": "ExtensionDependencies",
 "private": true,
 "version": "0.0.0",
 "devDependencies": {
 ...
 "gulp": "^3.9.0",
 "gulp-zip": "^3.0.2",
 "minimist": "^1.2.0"
 },
 "scripts": {
 "grunt": "grunt"
 }
}

Dans la définition de build, ajouter la tâche Gulp et renseigner ses paramètres :

  • Le chemin du fichier gulpfile.js précédemment créé et archivé
  • Les arguments avec le chemin (packagePath) et le nom du zip (packageName) qui sera créé.
    Exemple : –packagePath= »$(Build.StagingDirectory)/HelloWorldExt/ » –packageName= »myExtension.zip »

vstsbuild gulp

 

Dans la tâche “Copy Files” mettre le pattern **\bin\$(BuildConfiguration)\*.zip dans le paramètre Content

dropzip

Une fois le zip copié dans le répetoire de drop, il pourra être déployer dans la release.

Il est vrai que pour la plupart des projets on aurait tendance à utiliser msbuild afin de générer un zip de déploiement, mais pour des projets qui ne nécessitent pas de compilation, vous pouvez utiliser Gulp qui est offre une grande simplicité d’utilisation.

Votre zip est maintenant prêt à être déployé !

Tags: Build, VSTS, zip,

Un commentaire. Laisser un commentaire

Vous ne générez pas ici des fichiers ZIP mais des packages WebDeploy

Répondre

Laisser un commentaire

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