如何通过Git将Azure WebJob与.NET Core Web App一起部署?

时间:2016-08-12 13:53:39

标签: asp.net-mvc git azure azure-webjobs kudu

我认为这将是一个相当简单的任务,并且有相当多的文档,但我没有任何运气,并假设它几乎都已过时。

我有.NET Core MVC 6 Web App,我已经开发了一段时间,需要在Azure上为它设置一个WebJob。我想使用Azure提供应用程序已在使用的持续部署系统将其与应用程序一起部署。根据Kudu的说法,它有可能:

https://github.com/projectkudu/kudu/wiki/Web-Jobs#deploying-net-console-webjobs-alongside-an-aspnet-application

哪个州:

  

这在直接从Visual Studio部署时都适用   (WebDeploy),或通过git。

它引用了这个链接(https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-deploy-webjobs/),我一直试图这样做,但没有成功。

我有最新版本的Visual Studio 2015,.NET Core 1.0.0&工具和Azure SDK。

首先显而易见的是,我没有Azure文档屏幕截图中显示的脚手架选项,并且在找不到任何遗漏的依赖关系后,我试图按照描述手动设置它。

即使将所需文件放在指定位置(webjobs-list.jsonwebjob-publish-settings.json)并为我的项目配置它们,并将Microsoft.Web.WebJobs.Publish添加到WebJob项目之后,Kudu也找不到WebJob通过持续部署系统。

我已根据我在那里找到的文档尝试了几种方法和变体,但我无法使其正常工作,所有其他SO问题都是一年之久。

有谁知道我做错了什么?这是否仍然可以使用最新版本的.NET Core MVC?

1 个答案:

答案 0 :(得分:7)

WebJobs'文件存储在' App_Data / jobs / continuous'或者' App_Data / jobs / triggered'文件夹,所以我可以用来部署Web App和WebJob的一种方法是手动复制所有WebJobs'构建期间这些文件夹所需的文件。我认为这将适合VS工具的更新。

我的解决方案与您的解决方案略有不同,因为我使用Visual Studio Team Services构建并将我的应用程序发布到Azure,但概念是相同的。您可以在Visual Studio中使用post build事件来运行将这些文件复制到作业的脚本。文件夹中。

以下是我在VSTS构建定义中配置的步骤:

  1. 命令行任务: 工具: dotnet 参数:恢复

  2. Visual Studio构建任务: 解决方案: ** \ MyApp.sln 平台: $(BuildPlatform) 配置: $(BuildConfiguration) Visual Studio版本: Visual Studio 2015

  3. 命令行任务: 工具: dotnet 参数:发布-c $(BuildConfiguration)

  4. 命令行任务: 工具: dotnet 参数:发布-c $(BuildConfiguration)$(Build.SourcesDirectory)\ src \ MyApp.Jobs \ project.json

  5. 复制文件任务(这是技巧): 源文件夹: src / MyApp.Jobs / bin / $(BuildConfiguration)/netcoreapp1.0/publish/ 内容: ** 目标文件夹: src / MyApp.Web / bin / $(BuildConfiguration)/netcoreapp1.0/publish/App_Data/jobs/triggered/MyJobName /

  6. 存档文件任务: 要归档的根文件夹(或文件): src / MyApp.Web / bin / $(BuildConfiguration)/netcoreapp1.0/publish/ 前缀根文件夹名称以归档路径:取消选中 存档类型: zip 要创建的存档文件: website.zip 替换现有存档:已选中

  7. 复制文件任务: 源文件夹: 内容: ** / * .zip 目标文件夹: $(Build.ArtifactStagingDirectory)

  8. 发布构建工件任务: 路径发布: $(Build.ArtifactStagingDirectory) 工件名称:删除 工件类型:服务器