【问题标题】:How do I deploy an Azure WebJob alongside a .NET Core Web App via Git?如何通过 Git 将 Azure WebJob 与 .NET Core Web 应用一起部署?
【发布时间】:2016-12-19 13:43:15
【问题描述】:

我认为这将是一项非常简单的任务,并且那里有相当多的文档,但我对其中任何一个的运气都为零,并且我认为它几乎都已经过时了。

我有 .NET Core MVC 6 Web 应用程序,我已经开发了一段时间,需要在 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 & Tools 和 Azure SDK。

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

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

根据我在那里找到的文档,我尝试了几种方法和变体,但我无法让它发挥作用,而且所有其他 SO 问题都已经存在一年了。

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

【问题讨论】:

  • 我认为 VS 尚不支持使用核心应用部署 WebJobs。
  • @DavidEbbo 然后文档应该反映这一点,而不是贡献者只是触摸文档上的日期以使其看起来像是最近的和最新的。完全误导!
  • @DavidEbbo 对此有何更新?现在 .Net Core Console App WebJobs 需要通过 Portal 部署,并且不能与 Asp.Net Core 项目一起部署,如此处所述stackoverflow.com/questions/39958252/…
  • 根据我从 VS 工具团队那里听到的消息,这项工作即将开展。抱歉,我没有 ETA 可分享。
  • @MathiasR 我现在实际上有一个可靠的可行解决方案。目前忙于工作,但我会看看我是否可以在下周抽出时间发布答案(仍然需要概括解决方案,因为它是针对我的项目的)。

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


【解决方案1】:

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

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

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

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

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

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

  4. 命令行任务: 工具: dotnet 参数: publish -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) 工件名称: drop 工件类型: 服务器

【讨论】:

  • 太棒了!经过几个小时的敲打,你保存了我的项目 =]
  • 如果您在 kudu 中看不到 web 作业。添加 run.cmd 并设置为始终复制 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多