Déployer un webjob avec VSTS

Publié par Fabrice Michellonet sous le(s) label(s) , , le 9 février 2018


Si vous avez déjà eu besoin de déployer un azure webjob via vsts, vous avez du tomber sur ce bon blog post de Thomas Hellstrøm. Néanmoins, en suivant telles quelles les instructions de notre ami Thomas, vous risquer de casser la webapp qui host votre webjob.

Ce blog post va prendre la tournure d’une recette de cuisine, d’un pense bête ; cela m’évitera de me reposer la même question dans quelques mois, et j'espère secrètement que cela puisse aider certains d'entre vous.

On commence donc par utiliser la fonction « Publish as Azure Webjob » à partir de Visual Studio 2017.



Pas la peine d’aller au bout du deploy, ce tool va ajouter le package nuget Microsoft.Web.WebJobs.Publish et créer le fichier « webjob-publish-settings.json » dans le répertoire properties de votre projet.

On passe ensuite sur le build sur VSTS. Thomas nous propose de définir les arguments suivants sur la tache msbuild :

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true 
/p:SkipInvalidConfigurations=true /p:Configuration=Release

Notez le paramètre « /p:WebPublishMethod=Package », qui produira un fichier zip.



Et en jetant un œil dans le fichier zip, mauvaise surprise, on est en train de packager le dossier bin avec des dll qui vont venir écraser celles qui appartiennent à la webapp.



Du coup j’vous propose de corriger ça.
On commence par changer les arguments de la tache msbuild.



/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem 
/p:publishUrl="$(build.artifactstagingdirectory)" /p:DeployDefaultTarget=WebPublish 

Ce qui va produire le même contenu que le fichier zip mais directement sur le système de fichier.

Puis on ajoute une tache delete file, qui se chargera de supprimer le dossier /bin que nous voulons éviter de déployer.




Voila, cette fois ci nous y sommes. J’espère que cela pourra vous aider!