如何通过 VSTS 将 Azure WebJob 和 App 部署到同一个 App Service?

How do you deploy an Azure WebJob and App to the same App Service via VSTS?

我有一个 Visual Studio 2017 解决方案,其中包含一个 ASP.NET Web 应用程序项目(称为 UI)和一个 Azure WebJob 项目(称为 WebJobs)。我已将两者配置为从 Visual Studio(右键单击,发布)内部署到 Azure 到同一个应用程序服务。该解决方案还配置为在我推送到 VSTS 时进行构建。

我想设置 VSTS 以在成功构建时也部署这两个项目,但我遇到了问题。

我的理解是,要实现这一点,我需要创建一个发布定义,该定义链接到我的构建定义,并在管道中添加了一个 "Deploy Azure App Service" 任务。我尝试了这个并得到了一个错误,因为在 artifacts 文件夹中发现了多个 .zip 文件,这建议我使过滤器更具体,所以我将 "Package or folder" 选项从 $(System.DefaultWorkingDirectory)/**/*.zip 更改为 $(System.DefaultWorkingDirectory)/**/UI.zip.这解决了错误,但现在显然它只是在部署我的应用程序 (UI)。

我的下一步是尝试为 WebJob 项目创建一个单独的环境,并将 $(System.DefaultWorkingDirectory)/**/WebJobs.zip 指定为包。现在两个环境 "successfully" 都部署了,但它破坏了我的应用程序,我很确定它已经在应用程序的顶部部署了 WebJob(我不知道如何确认这个信念......)。

I notice that when you add an Environment to the release definition and choose a template, under "Azure App Service Deployment" it says: "Deploy your application to Azure App Services. Choose from Web App On Windows, Linux, Containers, Function Apps or Web Jobs" but when choose this template WebJob isn't listed in the "App Type" 往下拉!

我在网上找到了一些关于从 VSTS 部署 WebJobs 的资源,但它们都已过时,并且描述的选项不再与 VSTS 中当前的选项相匹配。

已解决:

我的问题由于下面 's and 的回答而得到解决。

首先,您必须在Visual Studio和select中右键单击您的Web App项目Add > Existing Project as Azure WebJob 并按照向导操作。接下来,您必须通过更新 Package or folder 路径过滤器确保 VSTS 部署任务仅找到一个要部署的 .zip 包,以便它仅找到 Web App的一个;在我的例子中是 $(System.DefaultWorkingDirectory)/**/UI.zip.

非常感谢@DavidEbbo 和@starianchen 的帮助!

您所要做的就是通过右键单击您的 Web 应用程序并选择来创建 WebJob 项目:

Add / New Azure WebJob project

或者,如果您的解决方案中已有 WebJobs 项目:

Add / Existing WebJob project

执行此操作后,发布 Web 应用程序会自动将 WebJob 发布到它所属的位置。这一切都发生在一个 zip 文件中,在 VSTS 中没有什么特别要做的。不要尝试单独发布 WebJob 项目。

将webjob关联到web app,webjob包含在web app包中,所以你只需要将web app部署到azure app service。

发布时也会生成webjob的包(这就是为什么有两个zip文件),但你只需要在Azure App Service部署任务中指定web应用程序包即可。 (选中使用 Web 部署选项发布)