我有一个启用了Git的ASP.NET WebApp,其中包含一个关联的Azure WebJob.当我通过Visual Studio部署它时,一切都很好,但在连续交付环境中这有点难,所以我想通过Git发布Web App和WebJob.
通过Azure工具我关联了我的WebJob项目,我在WebApp项目中获得了一个"webjobs-list.json"文件:
{ "$schema": "http://schemastore.org/schemas/json/webjobs-list.json", "WebJobs": [{ "filePath": "../CodeInside.Hub.Job/CodeInside.Hub.Job.csproj" }] }
webjobs-list.json来源
在Console App Project中,我得到了一个带有以下内容的"webjob-publish-settings.json"文件:
{ "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json", "webJobName": "Hub-Crawler", "startTime": "2014-11-25T02:00:00+01:00", "endTime": null, "jobRecurrenceFrequency": "Day", "interval": 1, "runMode": "Scheduled" }
webjob - 发布 - settings.json
正如您所看到的,"runMode"设置为"Scheduled",当我通过Visual Studio部署它时一切正常.
但是没有Visual Studio我得到了这个"按需"的WebJob:
这是目前不支持或可能是什么问题?
完整的.sln可以在GitHub上找到
最后有一个使用git部署部署预定webjobs的解决方案.
这个博客有详细信息.
该解决方案使用kudu调度程序而不是Azure调度程序,因此Azure门户仍将作业显示为"按需",但它确实按计划执行,门户网站准确显示历史记录.
实际上,问题是该方案尚未得到很好的支持.具体来说,当通过git(或GitHub/Bitbucket)发布时,该webjob-publish-settings.json
文件将被忽略.
一种解决方法是使用VS发布一次只是为了创建调度程序,然后使用git.
最终,将使用定义WebSite和调度程序的Azure Resource Manager模板来解决此方案.从技术上讲,这可以在今天完成,但目前还没有太多的文档.