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.
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 .
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
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
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:
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). 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 . run.cmd
au bon endroit, il sera reconnu comme WebJobMaintenant, pour déployer un travail Web à l'aide de VSTS quel que soit l'infrastructure d'exécution, procédez comme suit:
settings.job
ici si nécessaire.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]/
Et c'est tout.