ScriptRunner操作Jira Cloud创建工单、关联工单及复制附件问题求助
工单关联创建失败解决方法
你代码里有三个可直接修复的错误:
- 变量名大小写错误:Groovy语法大小写敏感,你预先定义的触发工单key变量是
issueKey(K大写),但在关联配置中写的是issuekey(k小写),该变量为null导致关联参数无效。 - issuelinks结构不符合Jira REST API规范:
issuelinks字段是操作列表,每个add操作需要额外包裹一层数组。 - 关联类型参数冗余:创建关联时仅需传入关联类型的
name/id即可,传入inward/outward参数会触发接口校验失败。
修改后的创建工单body配置参考:
.body([ fields: [ summary : summary, description: description, customfield_10078: [ id: sysname ], customfield_10060: ticketno, project : [ key: projectkey ], issuetype : [ id: issuetypekey ] ], update: [ issuelinks: [ [ add: [ type:[ name: "Blocks" ], outwardIssue: [ key: issueKey ] ] ] ] ] ])
如果修改后仍不生效,可额外检查两点:
- 执行脚本的用户拥有两个项目的「关联工单」权限
- 你的Jira实例中确实存在名为
Blocks的关联类型,中文实例可能名为阻塞,替换为对应名称即可。
中文附件名乱码解决方法
该问题不需要额外引入依赖,仅需上传时对文件名做UTF-8编码即可,修改附件上传部分的.field参数:
def encodedFileName = URLEncoder.encode(attachment['filename'] as String, "UTF-8").replace("+", "%20") def resp = Unirest.post("/rest/api/2/issue/${clonedIssue.id}/attachments") .header("X-Atlassian-Token", "no-check") .field("file", fileBody, ContentType.create(attachment['mimeType'] as String), encodedFileName) .asObject(List)
编码时将空格对应的+替换为%20可避免文件名中空格被错误识别。
内容的提问来源于stack exchange,提问作者Carlos
相关产品推荐
相关产品推荐

