1
我想在所有链接的故事和任务处于状态“完成”时自动关闭史诗。我不擅长groovy,还是新鲜的,并试图找到我的脚。所以,我有以下脚本:关闭史诗,当所有的故事过渡完成
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.onresolve.scriptrunner.runner.customisers.ContextBaseScript
import groovy.transform.BaseScript
import org.apache.log4j.Logger
@BaseScript ContextBaseScript context
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def issueService = ComponentAccessor.getIssueService()
def currentUser = ComponentAccessor.jiraAuthenticationContext.getLoggedInUser()
def isEpicInProgress = {Issue epic ->
if (epic.issueType.name == "Epic") {
if (epic.statusObject.name != "Done") {
return true
} else {
return false
}
}
}
def isStoryClosed = {Issue story ->
if (story.statusObject.name == "Done") {
return true
} else {
return false
}
}
def updateEpic = {Issue epic ->
if (isEpicInProgress) {
def parameters = issueService.newIssueInputParameters()
def result = issueService.validateTransition(currentUser, epic.id, 31, parameters)
issueService.transition(currentUser, result)
log.warn("Epic update to " + result)
}
}
def isEpicClosable = {Issue epic ->
def finalResult = true
issueLinkManager.getOutwardLinks(epic.id).each { link ->
def story = link.destinationObject
def closedStory = isStoryClosed(story)
finalResult = closedStory && finalResult
}
log.warn("Final result is " + finalResult);
return finalResult
}
issueLinkManager.getInwardLinks(issue.id).each { link ->
def linkTypeId = link.getLinkTypeId()
def isEpicOfLinkType = 10300
if (isEpicOfLinkType == linkTypeId) {
def epic = link.sourceObject
if (isEpicInProgress(epic)) {
if (isEpicClosable(epic)) {
updateEpic(epic)
}
}
}
}
JIRA抱怨如下:
story.statusObject.name已经过时 - >我不知道如何找到新的一个
我得到的第二个问题是,除了上述警告,脚本运行时没有产生任何错误,但Epic无法自动转换。 以上是故事发布类型的工作流程 以上是史诗发布类型。
请帮助:)