如何从X-Ray Jenkins插件获取创建的Jira工单ID?
获取X-Ray Jenkins插件导入后的Jira工单ID方案
方法1:尝试捕获插件返回值(部分版本支持)
检查当前使用的X-Ray Jenkins插件版本,部分较新的版本中,XrayImportBuilder步骤会直接返回导入结果的JSON对象,可直接从中提取工单ID。示例代码:
def importResult = step([$class: 'XrayImportBuilder', endpointName: '/multipart', importFilePath: 'result.json', importInfo: 'info.json', inputInfoSwitcher: 'filePath', serverInstance: 'my-server-instance-value']) def issueId = importResult.issues[0].id // 需根据实际返回的JSON结构调整字段路径 echo "创建的工单ID:${issueId}"
如果当前版本不支持返回值,可尝试升级到插件的最新稳定版再测试。
方法2:绕开插件,直接调用X-Ray REST API
不用Jenkins插件,直接用Groovy调用X-Ray的API完成导入,这样能直接获取API响应数据提取工单ID。步骤如下:
- 读取本地
result.json和info.json的内容 - 构造multipart请求发送到X-Ray的
/multipart端点 - 解析响应JSON提取工单ID
示例代码片段(需依赖Jenkins的HTTP Request Plugin):
// 读取本地测试结果文件 def resultContent = readFile(file: 'result.json') def infoContent = readFile(file: 'info.json') // 发送请求到X-Ray API(需提前在Jenkins配置Jira访问凭证) def response = httpRequest( url: 'https://你的Jira实例地址/rest/raven/1.0/import/multipart', httpMode: 'POST', authentication: '你的Jira凭证ID', multipartName: 'result', multipartFile: resultContent, additionalParameters: [info: infoContent] ) // 解析响应获取工单ID def responseJson = new groovy.json.JsonSlurper().parseText(response.content) def issueId = responseJson.issues[0].id echo "创建的工单ID:${issueId}"
方法3:预创建工单并指定Key(业务允许时使用)
如果业务场景支持,可先通过Jira API创建一个空的测试执行工单,拿到其ID/Key后,在info.json中指定这个Key,导入时会直接将结果关联到该工单,无需从插件输出提取ID。
示例info.json配置:
{ "fields": { "project": { "key": "你的项目Key" }, "summary": "测试执行结果汇总", "issuetype": { "name": "Test Execution" } }, "testExecutionKey": "PROJ-1234" // 预创建的工单Key }
内容的提问来源于stack exchange,提问作者Vadym
相关产品推荐
相关产品推荐

