【发布时间】:2022-01-28 15:17:49
【问题描述】:
我们的构建管道包含一个 YML 模板,用于构建我们所有的 WCF 服务和 Web 应用程序。对于除一个以外的所有 WCF 服务,它的作用就像是一种魅力。但是,对于这一 WCF 服务,在发布工件阶段的构建日志中会生成以下输出:
##[警告]目录 'D:\azagent\A2_work\1381\a' 为空。不会添加任何内容来构建工件“drop”。
我们的构建阶段调用一个单独的 YML 文件,其中包含以下内容来构建和发布项目:
- task: VSBuild@1
displayName: "Build ${{ parameters.solution}}"
inputs:
solution: ${{ parameters.solution }}
msbuildArgs: >
/p:DeployOnBuild=true
/p:WebPublishMethod=Package
/p:PackageAsSingleFile=true
/p:SkipInvalidConfigurations=true
/p:IgnoreDeployManagedRuntimeVersion=true
/p:PackageLocation="$(build.ArtifactStagingDirectory)"
platform: ${{ parameters.buildPlatform }}
configuration: ${{ parameters.buildConfiguration }}
- task: PublishBuildArtifacts@1
displayName: "Publish Build Artifact"
inputs:
PathtoPublish: "$(Build.ArtifactStagingDirectory)"
ArtifactName: "drop"
publishLocation: "Container"
如前所述,这适用于所有其他 WCF 项目,并生成构建工件。但是,对于有问题的 WCF 服务,不会生成构建工件。我们观察到,D:\azagent\A2_work\1381\a 文件夹(理论上是Build.ArtifactStagingDirectory)中没有创建 ZIP 文件。
我已经尝试了许多推荐的解决方案来解决这个问题,但都没有效果。
- 在
VSBuild@1任务和PublishBuildArtifacts@1任务之间添加CopyFiles@2任务确实将文件放在Build.ArtifactStagingDirectory中,但它们不在ZIP 文件中。此外,部署任务(稍后在管道中)失败,因为drop文件夹中没有 ZIP 文件。 - 添加
/p:OutDir=$(Build.ArtfactStagingDirectory)似乎确实产生了某种工件,但部署任务仍然失败,声称在drop文件夹中找不到ZIP 文件。 - 我创建了一个仅包含 WCF 项目的测试存储库(因为它通常包含在包含它和 Web 应用程序的解决方案中)并针对该存储库运行管道。未创建任何构建工件。
最终,我所做的一切似乎都无法让这个项目生成构建工件。
我在这里缺少什么?我可以提供哪些进一步的信息来帮助您解决这个问题?
【问题讨论】:
-
您是否尝试过在 Visual Studio 本地发布项目并检查工件是否可用?我还建议您检查项目的构建配置值和参数值是否匹配。
-
如果 Artifacts 制作良好,并且如果您只想压缩它,您可以使用 Archive File Task docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/…
-
@AnnamalaiD 我可以在 Visual Studio 中本地发布项目,它会创建一个文件夹,其中包含将事物部署到 Web 服务器所需的所有文件。但是,它不会在构建管道中这样做。
标签: azure-devops yaml