如何获取Jenkins中XrayImportBuilder步骤的执行结果?
解决XrayImportBuilder步骤结果无法返回并添加到Jenkins构建描述的问题
核心方案:扫描日志提取关键信息
既然XrayImportBuilder本身不返回有效结果,最靠谱的替代方式是捕获该步骤的日志输出,从中提取XRAY_TEST_EXECS: XXX格式的测试执行ID,再写入构建描述。
脚本实现示例
如果XrayImportBuilder可通过shell命令调用,直接捕获标准输出:
// 执行Xray导入并捕获日志 def xrayOutput = sh( script: 'your-xray-import-command', returnStdout: true ) // 正则匹配提取测试执行ID def execIdMatcher = xrayOutput =~ /XRAY_TEST_EXECS: (\w+-\d+)/ if (execIdMatcher.find()) { def testExecId = execIdMatcher.group(1) // 更新当前构建描述 currentBuild.description = "关联Xray测试执行: ${testExecId}" }
如果是Jenkins插件提供的可视化步骤(无法直接捕获stdout),可将日志重定向到临时文件再读取:
// 创建临时日志目录 sh 'mkdir -p ./xray-logs' // 执行XrayImportBuilder,将输出重定向到文件 XrayImportBuilder( // 你的Xray导入参数 testKey: 'XXX', // 其他参数... ) 2>&1 | tee ./xray-logs/import.log // 读取日志文件并提取ID def xrayLog = readFile './xray-logs/import.log' def execIdMatcher = xrayLog =~ /XRAY_TEST_EXECS: (\w+-\d+)/ if (execIdMatcher.find()) { currentBuild.description = "Xray测试执行ID: ${execIdMatcher.group(1)}" }
细节优化
- 正则表达式可根据实际日志格式调整,比如支持多行匹配、多个ID场景
- 若日志输出级别不够,可临时调整Jenkins日志记录器,确保
XRAY_TEST_EXECS相关信息被输出 - 可加入异常处理,避免提取失败影响构建流程
关于curl方案的说明
curl调用属于绕开现有插件集成的倒退方案,需要手动处理认证、参数拼接等逻辑,不仅增加维护成本,还会丧失Jenkins与Xray插件的原生集成优势,因此不建议采用。
内容的提问来源于stack exchange,提问作者johnfo
相关产品推荐
相关产品推荐

