【发布时间】:2017-11-19 18:01:13
【问题描述】:
我有大量 Azure WebJobs,它们都部署到单个 Azure 应用服务,以及同一个 Azure 应用服务上的网站。每个 WebJob 都使用 WebJobs SDK 和 Microsoft.Web.WebJobs.Publish nuget 包(我们是最新的 1.0.13 版本)将它们打包以进行部署。以下是我们在 CI 构建 (VSTS) 中用于生成部署包的 MSBuild 参数:
/p:DeployOnBuild=true /p:PublishProfile=Release /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=$(Build.StagingDirectory)
这会生成一个与“Azure Web Service Deploy”VSTS 任务一起正常工作的包(因为 WebJobs 作为 WebJobs 正确运行),这不是问题。
问题在于 .zip 文件包复制了所有 WebJob 程序集。这些副本最终会提供给 Azure 应用服务。
每个 WebJob 包的 .zip 文件中的文件夹结构为:
- Content/[build agent full path]/
- app_data/jobs/continuous/[web job name]/[assembly files]
- bin/[assembly files]
这导致问题有 3 个原因:
- 我们已开始调查与安全供应商合作,该供应商将对我们的部署包执行静态分析。这种重复会导致报告问题。
- 由于
bin/[assembly files]用于应用服务,因此它们与网站的程序集混合在一起,该网站也部署到相同的应用服务。 - 通过在这些部署包中转移所有这些额外的膨胀,我们的构建/发布时间变慢了。我的团队实践持续交付,并希望管道快速。
那么为什么除了必需的app_data/jobs/continuous/[WebJobName]/[assembly files] 之外,Microsoft.Web.WebJobs.Publish 包还添加了bin/[assembly files]?还有更重要的是,如何防止打包过程中包含bin/[assembly files]?
我真的很讨厌必须添加构建步骤来拆分压缩包并将其重新组合在一起而不会产生额外的垃圾,或者必须想办法手工制作发布包。您有 1 份工作,Microsoft.Web.WebJobs.Publish! :)
【问题讨论】:
标签: azure msbuild azure-webjobs msdeploy azure-webjobssdk