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

Ben*_*Ben 7 azure azure-webjobs azure-web-app-service azure-devops azure-pipelines-release-pipeline

我有一个Visual Studio 2017解决方案,同时具有ASP.NET Web应用程序项目(称为UI)和Azure WebJob项目(称为WebJobs)。我已经将两者都配置为从Visual Studio(右键单击,发布)中部署到Azure到同一App Service。该解决方案还配置为每当我推送到VSTS时就构建。

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

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

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

我注意到,当您向发行版定义添加环境并选择模板时,在“ Azure App Service部署”下显示:“将应用程序部署到Azure App Services。从Windows,Linux,Containers,Function Apps或Web应用Web Jobs ”,但是在选择此模板时,“应用程序类型”下拉列表中未列出WebJob!

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

解决了:

大卫·埃博David Ebbo)和陈星辰(starian chen)的以下回答都解决了我的问题。

首先,您必须右键单击Visual Studio中的Web App项目,然后选择“ 添加”>“现有项目”作为Azure WebJob,然后按照向导进行操作。接下来,您必须确保VSTS部署任务通过更新软件包或文件夹路径过滤器来确保仅找到一个要部署的.zip软件包,因此它仅找到Web应用程序的.zip软件包。就我而言$(System.DefaultWorkingDirectory)/**/UI.zip

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

Dav*_*bbo 8

您要做的就是通过右键单击Web App并选择以下选项来创建WebJob项目。

Add / New Azure WebJob project
Run Code Online (Sandbox Code Playgroud)

或者,如果解决方案中已经有一个WebJobs项目:

Add / Existing WebJob project
Run Code Online (Sandbox Code Playgroud)

完成此操作后,发布Web应用程序将自动发布它所属的WebJob。所有这些都发生在单个zip文件中,并且在VSTS中没有什么特别的事情要做。完成该操作后,请勿尝试单独发布WebJob项目。


sta*_*SFT 5

通过与Web应用程序关联的WebJob,Web Job包含在Web应用程序包中,因此您只需要将Web应用程序部署到Azure App服务即可。

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

在此处输入图片说明