Reputation: 113
Is there a way of having my Azure WebJob automatically deploy without needing to right click and select "Publish as Azure WebJob" every time? i.e. when I check-in my solution it is automatically deploy to the Azure Portal webjob section
Upvotes: 11
Views: 7678
Reputation: 1242
In Visual Studio in order to enable automatic WebJobs deployment together with a Web project right-click the Web project in Solution Explorer, and then click: Add > Existing Project as Azure WebJob and create your WebJob.
More details can be found in an article by MS - webjobs-dotnet-deploy-vs
Upvotes: -1
Reputation: 1391
While I tried to accomplish this, I found out that there is no tooling support for dotnet core projects as of now. The proposed webjobs.props/ msbuild solutions are all dotnet framework specific.
However I also found out that a webjob can be anything that's executable on the local machine (could be node.js or just a batch command).
The key is to understand how WebJobs are recognized by the host:
run.cmd
file that contains instructions on how to start the webJob. For dotnet core that would be dotnet MyDll.dll %*
(%*
to pass arguments for output redirection etc. down from the host). run.cmd
file needs to be located either at app_data/jobs/continuous/[NameOfJob]
or app_data/jobs/triggered/[NameOfJob]
. For the triggered job you could also add a schedule using a settings.job
file like described here. run.cmd
at the proper location it will be recognized as a WebJobNow to deploy a webjob using VSTS regardless of the runtime framework follow these steps:
settings.job
here if needed.app_data/jobs/[triggered/continuous]/[nameOfJob]
and copy your executables into the lowest folder. Make sure run.cmd
is directly under the [nameOfJob]/
directoryAnd that's it.
Upvotes: 5
Reputation: 33698
You can do it through Continuous Integration Build (trigger the build once check in).
Regarding deploy WebJob, you can generate a package through Visual Studio Build task with /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"
argument.
Then deploy it through Azure App Deployment task.
More information: Deploying and Schedule Azure WebJobs from VSTS to Azure Web App
Upvotes: 3
Reputation: 4406
Yes you can.
Brady Gaster has written about this on a blog post (haven't tried it myself).
From what I gather, the TL;DR; summary is the following:
add a file named webjobs.props to the properties folder of the Web Application Project or Console Application you’re publishing
After that, edit the file so the ManagementCertificate
, SubscriptionId
and PublishSettingsPath
are filled with correct data.
Now you should be able to publish the files using the command
msbuild WebJobDemo.Web.csproj /p:DeployOnBuild=true /p:PublishProfile=WebJobDemo /p:VisualStudioVersion=12.0 /p:Password=asdfasdf
(Note, post is written for VS2013)
Afterwards you should see something like this.
You could of course automate this in VSTS (or any other build/deployment tool for that matter) whenever something is checked in to your repository.
A (rather complete) answer on how to do this in VSTS via the command-line can be found in this answer: https://stackoverflow.com/a/45703975/352640
Upvotes: 4