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



我有大量的Azure WebJobs,它们都部署到单个Azure应用服务,以及同一Azure 应用服务上的网站。每个 Web 作业都使用 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)

这将生成一个工作正常的包(因为 Web 作业作为 Web 作业正确运行)与"Azure Web 服务部署"VSTS 任务,这不是问题所在。

问题是.zip文件包复制了所有 WebJob 程序集。这些重复项最终会进入 Azure 应用服务。

每个 Web 作业包的.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. 通过在部署包中传输所有这些额外的膨胀,我们的构建/发布时间会减慢。我的团队实践持续交付,并期望管道速度快

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

我真的很讨厌必须添加构建步骤来分解压缩包并将其重新组合在一起,而无需额外的垃圾,或者必须找到一种方法来手工制作发布包。您有 1 个作业,Microsoft.Web.WebJobs.Publish!:)

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

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

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

如何找到它?

1) 使用/verbosity:diag运行 msbuild

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

3) 将<Target Name="SomeTargetName" />添加到您的.csproj

您应该以标有FromTarget=PublishWebJob的条目结尾。

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

很抱歉听到您遇到此问题。作为临时解决方法,您可以在csproj中覆盖此目标(CollectFilesFromIntermediateAssembly)。这将阻止文件发布到 bin 文件夹。

示例在这里: https://github.com/vijayrkn/ASPNetPublishSamples/blob/master/WebJobFullFramework/WebJobFullFramework.csproj#L56-L57

我们将很快在 WebJobs.Publish NuGet 包中修复此问题。

相关内容

  • 没有找到相关文章

最新更新