You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jenkins的Zephyr Scale插件无法将JUnit XML文件上传至Jira Server/DC

解决Jenkins流水线向Zephyr Scale Server/DC上传JUnit测试结果的问题

问题背景

我最近在尝试把Jenkins测试流水线里的JUnit测试XML文件发送到Jira Server上的Zephyr Scale插件,已经在Jenkins里配置好了连接信息,也验证过连接是有效的。在构建后操作里用了这段配置来发布测试结果:

publishTestResults serverAddress: 'https://jira.me.local/', projectKey: 'GW', format: 'JUnit XML Result File', filePath: 'junitresult.xml', autoCreateTestCases: false

结果执行的时候直接报错了,错误日志如下:

[Zephyr Scale] [INFO] Publishing test results...
[Zephyr Scale] [ERROR] There was an error while publishing test results to Zephyr Scale and they were not sent. Error details:
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // script
Error when executing fixed post condition:
java.lang.RuntimeException: Not implemented for Zephyr Scale Server/DC
at com.adaptavist.tm4j.jenkins.extensions.JiraInstance.publishJUnitFormatBuildResult(JiraInstance.java:99)
at com.adaptavist.tm4j.jenkins.http.Tm4jJiraRestClient.uploadJUnitXmlResultFile(Tm4jJiraRestClient.java:79)
at com.adaptavist.tm4j.jenkins.extensions.postbuildactions.TestResultPublisher.uploadResultsFile(TestResultPublisher.java:140)
at com.adaptavist.tm4j.jenkins.extensions.postbuildactions.TestResultPublisher.validateFieldsAndUploadResults(TestResultPublisher.java:115)
at com.adaptavist.tm4j.jenkins.extensions.postbuildactions.TestResultPublisher.publishResults(TestResultPublisher.java:94)
Caused: java.lang.RuntimeException
at com.adaptavist.tm4j.jenkins.extensions.postbuildactions.TestResultPublisher.handlePublishException(TestResultPublisher.java:106)
at com.adaptavist.tm4j.jenkins.extensions.postbuildactions.TestResultPublisher.publishResults(TestResultPublisher.java:96)
at com.adaptavist.tm4j.jenkins.extensions.postbuildactions.TestResultPublisher.perform(TestResultPublisher.java:85)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:100)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:70)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

后来我试着把XML转成JSON用自定义格式上传,结果又收到错误:{"errorMessages": ["Invalid Custom Format JSON file"]}

有没有大佬知道怎么解决这个问题?


解决办法

先搞懂核心问题

你遇到的Not implemented for Zephyr Scale Server/DC错误是关键——Zephyr Scale的Jenkins插件,直接上传JUnit XML的功能只给Cloud版本做了实现,Server/DC版本根本没这个功能,所以用插件的JUnit XML Result File格式肯定会失败。

方案一:直接调用Zephyr Scale的REST API(最靠谱)

绕过插件的限制,直接用API上传JUnit结果是最直接的办法,步骤如下:

  1. 先在Jenkins里配置好Jira的凭证:建议用API令牌(比密码安全),用户名就是你的Jira账号,令牌可以在Jira个人设置里生成。
  2. 在流水线里加一个步骤,用curl或者Jenkins的HTTP请求插件调用API,示例curl命令:
    curl -u "${JIRA_USERNAME}:${JIRA_API_TOKEN}" -X POST "https://jira.me.local/rest/atm/1.0/testresult/import/junit" \
    -H "Content-Type: multipart/form-data" \
    -F "file=@junitresult.xml" \
    -F "projectKey=GW"
    
    把${JIRA_USERNAME}和${JIRA_API_TOKEN}换成你在Jenkins里配置的凭证变量,同时确保junitresult.xml的路径是构建环境里能访问到的绝对路径或者相对路径。

方案二:修正自定义JSON格式上传

如果一定要用插件的自定义格式上传,那你不能随便把XML转成JSON,得严格按照Zephyr Scale Server/DC要求的JSON结构来。官方要求的基础结构大概是这样的:

{
  "projectKey": "GW",
  "testCycle": {
    "name": "Jenkins Build #${BUILD_NUMBER}"
  },
  "testResults": [
    {
      "testCaseKey": "GW-T1",
      "status": "PASS",
      "comment": "Test passed successfully"
    },
    {
      "testCaseKey": "GW-T2",
      "status": "FAIL",
      "comment": "Test failed due to timeout"
    }
  ]
}

你需要写个脚本(比如Groovy、Python)把JUnit XML里的测试用例映射到Zephyr的测试用例Key,或者开启自动创建测试用例的逻辑(如果允许的话),生成符合要求的JSON后再用插件上传。

额外注意事项

  • 确保你的Zephyr Scale Server/DC版本支持这个JUnit导入API,建议升级到较新的版本,避免兼容性问题;
  • 检查Jenkins服务器能正常访问Jira Server的API端点,防火墙、端口都要开放;
  • 用来上传的Jira账号必须有Zephyr Scale的「测试结果上传」权限,不然会报403错误。

内容的提问来源于stack exchange,提问作者Badr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 13:32:36