web-dev-qa-db-fra.com

Comment déployer Azure WebJob dans le cadre du déploiement automatique de VSTS

Existe-t-il un moyen de déployer automatiquement Azure WebJob sans avoir à cliquer avec le bouton droit de la souris et à sélectionner "Publier sous Azure WebJob" à chaque fois? c'est-à-dire que, lorsque j'inscris ma solution, celle-ci est automatiquement déployée dans la section des travaux Web du portail Azure.

9
Jaja1415

Oui, vous pouvez.

Brady Gaster a écrit à ce sujet sur un blog post (je ne l'ai pas essayé moi-même).

D'après ce que je comprends, le TL; DR; résumé est le suivant:

ajoutez un fichier nommé webjobs.props au dossier de propriétés du projet d'application Web ou de l'application console que vous publiez

Après cela, éditez le fichier pour que ManagementCertificate, SubscriptionId et PublishSettingsPath soient remplis avec les données correctes.

Maintenant, vous devriez pouvoir publier les fichiers en utilisant la commande

msbuild WebJobDemo.Web.csproj /p:DeployOnBuild=true /p:PublishProfile=WebJobDemo /p:VisualStudioVersion=12.0 /p:Password=asdfasdf

(Remarque, l'article est écrit pour VS2013)

Ensuite, vous devriez voir quelque chose comme ça .  deployment output

Vous pouvez bien sûr automatiser cela dans VSTS (ou dans tout autre outil de construction/déploiement) à chaque fois que quelque chose est archivé dans votre référentiel.

Vous trouverez une réponse assez complète sur la manière de procéder dans VSTS via la ligne de commande: https://stackoverflow.com/a/45703975/352640

4
Jan_V

Vous pouvez le faire via Continuous Integration Build (déclenchez la construction une fois archivée).

En ce qui concerne le déploiement de WebJob, vous pouvez générer un package via la tâche Visual Studio Build avec l'argument /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)".

Puis déployez-le via la tâche de déploiement d'Application Azure.

Informations complémentaires: Déploiement et planification d’Azure WebJobs de VSTS vers Azure Web App

3
starian chen-MSFT

Tandis que j'essayais d'accomplir cela, j'ai découvert qu'il n'existait pour l'instant aucun support en outillage pour les projets centraux dotnet. Les solutions webjobs.props/msbuild proposées sont toutes spécifiques au framework dotnet.

Cependant, j'ai aussi découvert qu'une webjob peut être tout ce qui est exécutable sur la machine locale (par exemple, node.js ou juste une commande batch). 


La clé est de comprendre comment WebJobs est reconnu par l'hôte:

  • Un WebJob sur un hôte Windows est (d'après ce que j'ai appris en l'expérimentant) juste un fichier run.cmd qui contient des instructions sur la façon de démarrer le WebJob. Pour le noyau dotnet, ce serait dotnet MyDll.dll %* (%* pour transmettre les arguments pour la redirection de sortie, etc. de l'hôte). 
  • Maintenant, selon que le travail est continu ou déclenché, le fichier run.cmd doit être situé à app_data/jobs/continuous/[NameOfJob] ou app_data/jobs/triggered/[NameOfJob]. Pour le travail déclenché, vous pouvez également ajouter une planification à l'aide d'un fichier settings.job tel que décrit ici
  • S'il y a un run.cmd au bon endroit, il sera reconnu comme WebJob

Maintenant, pour déployer un travail Web à l'aide de VSTS quel que soit l'infrastructure d'exécution, procédez comme suit:

  1. Construisez/publiez votre WebJob si nécessaire pour obtenir les exécutables
  2. Ajoutez un fichier run.cmd à côté des exécutables webjob contenant les instructions de démarrage appropriées. Vous pouvez également ajouter settings.job ici si nécessaire.
  3. Créez la hiérarchie de dossiers app_data/jobs/[triggered/continuous]/[nameOfJob] et copiez vos exécutables dans le dossier le plus bas. Assurez-vous que run.cmd est directement dans le répertoire [nameOfJob]/
  4. Compressez le dossier app_data de manière à ce que le package zip contienne toute la hiérarchie.
  5. Publiez votre fichier Zip à l'aide de la tâche normale de déploiement d'Azure App Service (comme pour le déploiement de l'application Web).

Et c'est tout.

0
Peter