如何在Azure DevOps发布流水线中通过邮件发送TestResults_runId.zip构件
解决方案
定位动态ID的测试结果压缩包
你不需要硬编码自动生成的runId,直接通过PowerShell通配符匹配规则+Azure DevOps内置预定义目录变量即可找到对应压缩包,示例代码如下:
# 递归遍历工作目录,匹配名称符合TestResults_*.zip规则的压缩包 $zipFile = Get-ChildItem -Path $(System.DefaultWorkingDirectory) -Filter "TestResults_*.zip" -Recurse | Select-Object -First 1 # 校验文件是否存在 if (-not $zipFile.Exists) { Write-Error "未找到测试结果压缩包,任务终止" exit 1 } $Attachment = $zipFile.FullName
发送邮件时传入附件参数
如果你使用Send-MailMessage cmdlet发送邮件,直接将上面获取到的$Attachment传入对应参数即可,示例如下:
# 示例发送邮件代码,根据你的实际配置调整参数 $mailParams = @{ From = "devops@yourdomain.com" To = "receiver@yourdomain.com" Subject = "Cypress测试执行结果" Body = "本次Cypress测试执行完成,详细结果见附件压缩包" SmtpServer = "你的SMTP服务器地址" Attachments = $Attachment } Send-MailMessage @mailParams
注意事项
- 如果你自定义过「发布测试结果」任务的输出目录,需要把代码中的
$(System.DefaultWorkingDirectory)替换为你指定的输出目录路径 - 调试阶段可以在PowerShell任务前增加一个命令行任务,执行
dir $(System.DefaultWorkingDirectory) /s打印所有文件路径,确认压缩包的实际存储位置 - 如果你使用的是Azure DevOps第三方邮件发送扩展,不需要额外写PowerShell代码,直接在扩展的附件配置栏填写通配符
**/TestResults_*.zip即可自动匹配对应压缩包
内容的提问来源于stack exchange,提问作者DKulchykovskyi
相关产品推荐
相关产品推荐

