如何通过VSTS将Azure WebJob与ASP.NET应用部署至同一App Service?
解决VSTS自动部署ASP.NET UI项目和WebJob到同一Azure App Service的步骤
我来帮你一步步搞定这个自动部署的问题,毕竟把UI和WebJob一起自动部署到同一个App Service确实需要点小技巧,咱们从构建配置到发布定义一步步来:
第一步:确保构建定义正确输出两个项目的部署包
首先得保证你的VSTS构建能生成UI和WebJob的可部署包,这样发布环节才能拿到对应的文件:
- 针对UI项目,在构建定义里添加
MSBuild任务,配置参数如下:
这个参数会让MSBuild生成一个单独的Web Deploy zip包,放到构建工件目录的UI子文件夹里。/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\UI\\" - 针对WebJob项目,同样添加
MSBuild任务,配置参数:
注意WebJob的包要单独输出到WebJobs子文件夹,方便后续发布时区分。/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\WebJobs\\" - 最后一定要加一个
Publish Build Artifacts任务,把$(build.artifactstagingdirectory)下的所有内容(也就是UI和WebJobs的包)发布到工件库,这样发布定义才能获取到这些文件。
第二步:创建发布定义实现自动部署
接下来创建发布定义,把两个项目部署到同一App Service:
- 新建发布定义,选择空白模板(或者直接选Azure App Service Deployment模板再修改)。
- 添加第一个
Azure App Service Deploy任务,用来部署UI项目:- 选择你的Azure订阅并完成授权;
- 目标App Service选择你已经部署过的那个;
- 包或文件夹路径填
$(System.DefaultWorkingDirectory)/**/UI/*.zip,这样能自动找到UI项目的部署包; - 其他保持默认配置即可。
- 添加第二个
Azure App Service Deploy任务,用来部署WebJob:- 同样选择对应的Azure订阅和目标App Service;
- 包或文件夹路径填
$(System.DefaultWorkingDirectory)/**/WebJobs/*.zip; - 关键配置:在Additional Deployment Options里,勾选
Publish using Web Deploy,然后在Additional Arguments里添加以下参数(根据你的WebJob类型调整):- 如果是连续WebJob:
-destDir="site\wwwroot\App_Data\jobs\continuous\WebJobs" - 如果是触发式WebJob:
-destDir="site\wwwroot\App_Data\jobs\triggered\WebJobs"
这个参数的作用是把WebJob的文件部署到主站点的App_Data目录下对应的WebJob文件夹里,Azure会自动识别这个目录下的WebJob并运行。
- 如果是连续WebJob:
额外注意事项
- 确认你的Azure App Service已经开启了Web Deploy功能:在Azure门户的App Service配置里,找到部署中心,确认Web Deploy是启用状态;
- 如果想简化部署步骤,也可以在构建阶段就把WebJob的文件合并到UI的部署包里:添加
Extract Files任务解压WebJob的zip包,再用Copy Files任务把解压后的文件复制到UI包的App_Data/jobs/[continuous|triggered]/WebJobs目录下,最后重新打包UI项目,这样发布时只需要一个部署任务就能搞定; - 测试发布定义时,可以先手动触发一次,查看日志排查问题,如果部署失败,重点看Web Deploy的报错信息,通常是路径权限或者包格式的问题。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

