"这篇文档是关于如何利用Jira的Coderunner插件和Groovy脚本来自动化创建bug工作流的教程。脚本展示了如何在Jira的后置处理器中执行Groovy代码,以便在特定条件下自动创建新的bug问题。" 在Jira中,工作流是管理项目任务状态和流程的核心工具。通过工作流,可以定义不同状态之间的转换规则,以及在这些转换中执行的操作。`Coderunner`是一个免费插件,它允许用户用Groovy语言编写脚本,以实现自定义的工作流自动化,如本例中创建新的bug问题。 Groovy是一种动态、强大的面向对象编程语言,它可以无缝集成到Java环境中,使得Jira的扩展和自动化变得简单。在提供的脚本中,首先导入了Jira的一些核心组件,包括: 1. `ComponentAccessor`: 这是一个全局访问器,用于获取Jira的各种服务,如`IssueManager`、`IssueFactory`等。 2. `MutableIssue`: 表示一个可以修改的Jira问题对象,用于创建新问题或更新现有问题。 3. `IssueManager`、`IssueFactory`、`SubTaskManager`、`CustomFieldManager`、`CommentManager` 和 `ProjectManager`: 这些都是Jira的管理器,分别用于操作问题、创建新问题、管理子任务、定制字段、评论和项目。 脚本的主要逻辑如下: 1. 获取当前问题($issue)的相关信息,如概要、描述和优先级,用于新创建的bug问题。 2. 定义新bug所在的项目和问题类型。`projectmanager.getProjectObjByKey("PCSHD")`获取项目对象,需要替换为实际项目的关键字。问题类型也需要手动指定,例如,将“Bug”替换为实际的问题类型名称。 3. 使用`issueFactory.getIssue()`创建一个新的`MutableIssue`对象,并设置创建者、概要、项目等信息。 4. 可以根据需要添加更多字段,如指派者、标签、组件等,以及自定义字段,使用`customFieldManager`来处理。 5. 创建完成后,可以通过`issueManager.createIssue()`方法将新问题保存到Jira中。 这个脚本提供了一个基本的框架,用户可以根据自己的需求进行修改,比如添加条件判断(例如,只有当当前问题的状态满足特定条件时才创建bug)、自定义字段的赋值,或者与其他Jira服务进行交互,如发送通知、更新相关问题等。 利用Jira的Coderunner插件和Groovy脚本,开发者可以灵活地定制工作流,提高工作效率,确保项目的顺利进行。对于Jira管理员和开发者来说,掌握这种自动化技术是非常有价值的。
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.Issue
def constantManager = ComponentAccessor.getConstantsManager()
def issueManager = ComponentAccessor.getIssueManager()
def issueFactory = ComponentAccessor.getIssueFactory()
def subTaskManager = ComponentAccessor.getSubTaskManager()
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def commentmanager = ComponentAccessor.getCommentManager();
def projectmanager = ComponentAccessor.getProjectManager();
//定义要创建的jira的概要,目前是获取当前jira的概要
def summary = $issue.getSummary();
//定义要创建的jira的描述,目前是获取当前jira的描述
def description = $issue.getDescription();
//定义要创建的jira的优先级,目前是获取当前jira的优先级
def pri = $issue.getPriority();
//定义待建jira所在的项目,把双引号中变更对应项目的关键字就可以了
def projectname = projectmanager.getProjectObjByKey("PCSHD");
MutableIssue newTask = issueFactory.getIssue()
newTask.setReporter($issue.reporter)
newTask.setSummary(summary)
newTask.setProjectObject(projectname)
//定义要创建jira的问题类型,把双引号中变更对应问题类型的名字就可以了
newTask.setIssueTypeId(constantManager.getAllIssueTypeObjects().find{it.getName() == "故障"}.id)
newTask.setDescription(description)
newTask.setPriority(pri)
Map<String,Object> newIssueParams = ["issue" : newTask] as Map<String,Object>
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦