为何Azure流水线中BuildQualityChecks与发布任务均运行失败?
问题根因及排查方案
两个报错属于配置问题引发的连锁故障,0覆盖率问题是因为任务无法获取有效的编译产物或覆盖率数据,发布失败是因为路径配置错误、产物输出路径和预期不符,可按以下步骤排查修复:
- 修正全链路配置参数不匹配问题
你当前BuildQualityChecks@8任务配置的buildPlatform为x86、buildConfiguration为Test,但PublishBuildArtifacts@1任务查找的是x64架构下的Release配置产物,说明流水线的编译、测试、质量检查、发布四个阶段的平台、配置参数不一致。
请确保VSBuild@1、单元测试任务、BuildQualityChecks@8、PublishBuildArtifacts@1四个任务的buildPlatform、buildConfiguration参数完全统一,否则VSBuild生成的产物会输出到对应配置的目录下,后续任务找不到对应文件就会触发报错。 - 修正发布路径配置错误
报错的待发布路径C:\a\1\s\App.Utils.cs\Utility\bin\x64\Release中存在错误的App.Utils.cs段,App.Utils.cs是C#代码文件而非目录,说明你在配置PublishBuildArtifacts的PathtoPublish参数时多写了.cs后缀,修正路径为项目目录即可,也可以使用流水线预定义变量避免手动写路径出错,示例配置:$(Build.SourcesDirectory)/App.Utils/Utility/bin/$(buildPlatform)/$(buildConfiguration)。 - 排查覆盖率为0的问题
覆盖率统计为0通常是以下几个原因导致:VSBuild编译阶段没有生成对应的pdb调试文件,覆盖率工具无法关联代码行数统计,可在VSBuild任务参数中确认是否开启了调试信息生成- 单元测试任务未执行/执行失败,没有生成有效的覆盖率报告文件,可查看测试任务的运行日志确认是否正常输出了coverage格式的报告
BuildQualityChecks任务没有配置正确的覆盖率文件路径,若你的覆盖率报告输出到了自定义目录,需要在任务中新增coverageFiles参数指向对应的报告文件路径
内容的提问来源于stack exchange,提问作者Boris
相关产品推荐
相关产品推荐

