Jenkins流水线:如何备份Robot Framework的output.xml用于邮件模板解析
当然可以实现!
完全不需要依赖归档构件,你只需要在Robot Publisher执行前,把生成的output.xml复制一份到安全的位置(或者直接在原目录重命名备份),就能避开它的自动删除逻辑。下面给你具体的Jenkins流水线实现方案:
具体步骤
1. 确定output.xml的路径
首先确认你的Robot Framework测试执行后,output.xml生成在哪个目录。通常默认是测试脚本所在的目录,比如${WORKSPACE}/robot-tests/output.xml(根据你的项目结构调整路径)。
2. 在Robot Publisher前添加复制操作
你有两种方式实现复制,选哪种都可以:
方式一:用Shell命令(简单直接)
在流水线里插入Shell步骤,把原文件复制为备份文件:
stage('Backup Robot Output') { steps { // 复制output.xml为output-backup.xml,路径根据你的实际情况修改 sh 'cp ${WORKSPACE}/robot-tests/output.xml ${WORKSPACE}/robot-tests/output-backup.xml' } }
方式二:用Groovy原生文件操作(不依赖Shell环境)
如果你的Jenkins agent环境可能没有Shell(比如Windows节点),可以用Groovy的文件API来复制:
stage('Backup Robot Output') { steps { script { def sourcePath = "${WORKSPACE}/robot-tests/output.xml" def backupPath = "${WORKSPACE}/robot-tests/output-backup.xml" def sourceFile = new File(sourcePath) def backupFile = new File(backupPath) // 复制文件内容(小文件适用) backupFile.text = sourceFile.text // 大文件推荐用流复制,更高效 // sourceFile.withInputStream { input -> // backupFile.withOutputStream { output -> // output << input // } // } } } }
3. 后续邮件模板解析用备份文件
在你的邮件模板Groovy代码里,直接读取备份的文件即可:
def robotResults = new XmlSlurper().parse(new File("${WORKSPACE}/robot-tests/output-backup.xml")) // 接下来就可以解析robotResults提取测试信息了
为什么这个方案可行?
Robot Publisher插件默认只会清理它指定的测试输出文件(也就是你配置的output.xml原文件),你手动复制出来的备份文件不在它的清理列表里,所以后续的邮件解析步骤可以正常访问这份备份,完全不需要归档构件。
如果不确定路径是否正确,可以在复制前加个步骤验证文件存在:
sh 'ls -la ${WORKSPACE}/robot-tests/' // Linux/macOS环境 // Windows环境替换为 // bat 'dir ${WORKSPACE}\\robot-tests\\'
内容的提问来源于stack exchange,提问作者BMuell
相关产品推荐
相关产品推荐

