如何将Azure DevOps代理文件系统中的HTML报告添加为发布管道日志附件
Azure DevOps 发布管道扫描报告获取方案
完全可以实现该需求,无需手动登录代理机器拉取文件,通过 Azure DevOps 内置能力即可将本地生成的扫描报告上传为管道日志附件,直接在发布记录中访问。
具体实现步骤
- 在扫描任务的下游新增上传附件逻辑,可选择内置的「发布构建附件」任务,或者直接通过 Azure DevOps 内置日志命令完成上传,无需额外安装插件。
- 配置上传规则时,需要准确填写扫描任务生成的报告路径,路径可使用预设变量拼接,比如常见的扫描输出路径为
$(Agent.WorkFolder)/_scanOutput/report.html,需和你扫描任务中配置的输出路径保持一致。 - 如果选择日志命令方式,直接添加一个命令行任务,执行对应脚本即可:
- Linux/macOS 代理执行:
echo '##vso[task.addattachment type=Distributedtask.Core.Summary;name=安全扫描结果报告;]$(Agent.WorkFolder)/_scanOutput/report.html' - Windows 代理执行:
Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=安全扫描结果报告;]$(Agent.WorkFolder)\_scanOutput\report.html"
- Linux/macOS 代理执行:
提示:如果扫描报告包含独立的 css、js 等依赖资源,建议先将所有报告相关文件打包为 zip 包后再上传,避免资源缺失导致报告无法正常渲染。
如果需要更方便的访问入口,还可以在上传完成后新增「发布摘要」任务,把报告的访问链接写入发布记录的首页摘要,后续打开对应发布版本就能直接点击访问报告。
常见问题排查
- 上传后找不到附件:可在扫描任务后新增一个文件列表查看任务,Linux 代理执行
ls $(Agent.WorkFolder)/_scanOutput,Windows 代理执行dir $(Agent.WorkFolder)\_scanOutput,确认报告文件确实生成在对应路径下。 - 在线打开报告显示空白:部分扫描工具生成的是多文件报告,仅上传 html 会丢失样式和脚本,建议打包为 zip 后下载到本地解压查看,也可以配置扫描工具生成内嵌所有资源的单文件 html 报告。
内容的提问来源于stack exchange,提问作者Sneha Dominic
相关产品推荐
相关产品推荐

