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

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

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

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

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

我注意到,当您向发布定义添加环境并选择模板时,在“Azure App Service Deployment”下,它会说:“将您的应用程序部署到Azure App Services.从Windows,Linux,容器,功能应用程序或Web应用程序中选择Web Jobs“但是当选择此模板时,WebJob未在”App Type“下拉列表中列出!

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

解决了:

由于下面的David Ebbostarian chen的答案,我的问题得到了解决.

首先,您必须在Visual Studio中右键单击Web App项目,然后选择Add>将现有项目作为Azure WebJob并按照向导进行操作.接下来,您必须确保VSTS部署任务仅通过更新程序包或文件夹路径筛选器找到要部署的一个.zip程序包,以便它只找到Web App的一个;在我的情况下,它是$(System.DefaultWorkingDirectory)/ ** / UI.zip.

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

解决方法

您只需通过右键单击Web App并选择以下内容来创建WebJob项目:

Add / New Azure WebJob project

或者,如果您已在解决方案中安装了WebJobs项目:

Add / Existing WebJob project

完成后,发布Web App会自动发布WebJob所在的位置.这一切都发生在一个zip文件中,在VSTS中没有什么特别的事情要做.一旦这样做,不要尝试单独发布WebJob项目.

相关文章

HTML代码中要想改变字体颜色,常常需要使用CSS样式表。CSS是...
HTML代码如何让字体盖住图片呢?需要使用CSS的position属性及...
HTML代码字体设置 在HTML中,我们可以使用标签来设置网页中的...
在网页设计中,HTML代码的字体和字号选择是非常重要的一个环...
HTML(Hypertext Markup Language,超文本标记语言)是一种用...
外链是指在一个网页中添加一个指向其他网站的链接,用户可以...