Jira ScriptRunner后置函数问题:关联Issue无法插入Comment
Jira ScriptRunner后置函数评论不显示问题排查与修复
核心问题
点击「MounaFixReleased」菜单项后,日志能正常打印关联Issue的评论内容,但评论未实际插入到Issue中。
问题定位
日志输出正常说明评论内容生成逻辑无问题,问题出在评论的持久化环节,结合代码分析有以下几个关键原因:
1. IssueService过渡参数未生效
你通过inputParameters.setComment(defectComment)给过渡动作附加评论,但部分Jira工作流过渡配置中,即使跳过验证/权限,过渡动作本身可能不支持携带评论字段,导致评论被丢弃。
2. 关联Issue筛选逻辑不严谨
当前代码仅通过IssueTypeId筛选关联Issue,未校验链接类型是否为「Resolves」,可能误处理了其他关联关系的Issue,导致评论加到了错误对象上。
3. getCurrentUser方法存在空指针隐患
方法中使用了未定义的gc变量,当当前用户为空时会抛出异常,中断后续逻辑。
修复方案
方案一:强制手动添加评论
在过渡动作执行后,直接调用CommentManager给关联Issue添加评论,不依赖过渡参数:
void PerformTransition(Issue linkedissue, String transitionToBeDone, Issue sourceObject) { def defectComment = "Fix FIXSUMMARY[ISSUEKEY] has been released by USERNAME[USER]."; // ... 原有代码省略 ... try { if (result.isValid()) { log.warn("CAM 5 " + defectComment) issueService.transition(currentUser, result) log.warn("CAM 6 " + defectComment) // 手动添加评论,确保写入Issue CommentManager commentManager = ComponentAccessor.getCommentManager() commentManager.create(linkedissue, currentUser, defectComment, false) } } catch (Exception e) { log.warn("CAM 6 " + e) log.warn(result.getErrorCollection().getErrors()) } }
方案二:修正关联Issue筛选逻辑
添加「Resolves」链接类型校验,确保只处理目标关联Issue:
// 初始化获取Resolves链接类型 def linkManager = ComponentAccessor.getIssueLinkManager() def resolveLinkType = linkManager.getIssueLinkTypes().find { it.name == "Resolves" } // 处理向外链接 for (IssueLink link in linksOut) { if (link.getLinkTypeId() == resolveLinkType.id && link.getDestinationObject().getIssueTypeId().equals("5")) { links.add(link) } } // 处理向内链接 for (IssueLink link in linksIn) { if (link.getLinkTypeId() == resolveLinkType.id && link.getDestinationObject().getIssueTypeId().equals("5")) { links.add(link) } }
方案三:修复getCurrentUser方法空指针
替换未定义的gc变量为具体默认用户:
ApplicationUser getCurrentUser() { ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getUser(); if (user == null) { // 替换为你的Jira默认用户名 user = ComponentAccessor.getUserManager().getUserByName("admin"); } return user; }
验证步骤
- 执行动作后,检查关联Issue的全部评论(包括内部评论,因为设置了
false不触发事件,不会在通知中显示) - 查看Jira日志中是否有
CommentManager相关的错误信息 - 确认关联Issue的工作流过渡动作是否允许添加评论
内容的提问来源于stack exchange,提问作者منى
相关产品推荐
相关产品推荐

