Everyone,
Could anyone please help me on deploying WebJobs using ARM Templates ?
Thanks, Rajaram.
The other answers cover the template aspect of getting the job created in Azure, but there's still the question of getting the webjob executable uploaded.
Assuming this deploy is part of a larger Azure website deploy, you simply need to include your webjob executable in the distribution of your website.
Per the kudu documentation the convention for placing your EXE is as follows:
To deploy a triggered job copy your binaries to: app_data\jobs\triggered\{job name}
To deploy a continuous job copy your binaries to: app_data\jobs\continuous\{job name}
A template shared by David Ebbo shows how to deploy Webjobs using Arm Templates.
In this template, a triggered webjob is linked to a website deployed by the same template. A webjob is a part of a jobCollection. This jobCollection is linked to it's parent website using the "dependsOn" node.
{
"apiVersion": "2014-08-01-preview",
"name": "[parameters('jobCollectionName')]",
"type": "Microsoft.Scheduler/jobCollections",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', parameters('siteName'))]"
],
"location": "[parameters('siteLocation')]",
"properties": {
"sku": {
"name": "standard"
},
"quota": {
"maxJobCount": "10",
"maxRecurrence": {
"Frequency": "minute",
"interval": "1"
}
}
},
"resources": [
{
"apiVersion": "2014-08-01-preview",
"name": "DavidJob",
"type": "jobs",
"dependsOn": [
"[resourceId('Microsoft.Scheduler/jobCollections', parameters('jobCollectionName'))]"
],
"properties": {
"startTime": "2015-02-10T00:08:00Z",
"action": {
"request": {
"uri": "[concat(list(resourceId('Microsoft.Web/sites/config', parameters('siteName'), 'publishingcredentials'), '2014-06-01').properties.scmUri, '/api/triggeredjobs/MyScheduledWebJob/run')]",
"method": "POST"
},
"type": "http",
"retryPolicy": {
"retryType": "Fixed",
"retryInterval": "PT1M",
"retryCount": 2
}
},
"state": "enabled",
"recurrence": {
"frequency": "minute",
"interval": 1
}
}
}
]
}
Regards,
Azure scheduler became obsolete on december 2019, after that, all Scheduler job collections and jobs stopped running, that is why Scheduler Job Collection in not usable anymore, Azure logic apps should be used instead. -Migrate Azure WebJobs from Azure Scheduler to Azure Logic Apps.
Here's an Azure QuickStart Template that deploys an Azure Web App with a Schedule Job.
Additionally, have you looked at the Visual Studio 2015 Azure SDK support for the Azure Resource Manager project type? It contains UI for more easily authoring ARM Templates directly from within Visual Studio.