Microsoft.Web.WebJobs.Publish 在部署包中生成重复的程序集

2024-03-06

我有大量的 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 个原因而导致问题:

  1. 我们已开始研究与安全供应商合作,该供应商将对我们的部署包进行静态分析。这种重复会导致报告问题。
  2. 因为bin/[assembly files]当它们发送到应用程序服务时,它们与也部署到同一应用程序服务的网站的程序集混合在一起。
  3. 通过在这些部署包中转移所有这些额外的膨胀,我们的构建/发布时间被减慢了。我的团队实践持续交付并期望管道fast.

那么为什么 Microsoft.Web.WebJobs.Publish 包添加在bin/[assembly files]除了所需的app_data/jobs/continuous/[WebJobName]/[assembly files]?更重要的是,我怎样才能防止包装过程包括bin/[assembly files]?

我真的不想添加构建步骤来分割压缩包并将其重新组合在一起,而不会产生额外的垃圾,或者必须找到一种手动制作发布包的方法。您有 1 份工作,Microsoft.Web.WebJobs.Publish! :)


我的更新为https://stackoverflow.com/a/44611520/8654143 https://stackoverflow.com/a/44611520/8654143

我必须为现有目标添加多个覆盖才能使其工作:

<Target Name="CollectFilesFromContent" />
<Target Name="CollectFilesFromReference" />
<Target Name="CollectFilesFromIntermediateAssembly" />
<Target Name="CollectFilesFrom_SourceItemsToCopyToOutputDirectory" />

如何找到它?

1)运行msbuild/verbosity:diag

2)检查日志并查找DestinationRelativePath=bin;会有相关条目FromTarget=SomeTargetName

3) Add <Target Name="SomeTargetName" />给你的.csproj

您应该以标记为的条目结束FromTarget=PublishWebJob.

我认为可以过滤内容FilesForPackagingFromProject变量以某种方式(可能覆盖CustomCollectFiles定位并修改FilesForPackagingFromProject那里)但我不知道 msbuild 足够好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Microsoft.Web.WebJobs.Publish 在部署包中生成重复的程序集 的相关文章

随机推荐