jenkins与jira集成
一、jira通过webhook触发jenkins流水线build
jira端配置
高级>网络钩子
配置webhook
配置自定义字段
添加自定义域
配置字段生效范围,一般建议在项目维度生效
将新配置的字段关联到页面
把字段设置为必选项
自定义字段添加和排序设置
jenkins端配置
安装插件
配置插件
编辑job,配置trigger,选择新安装的插件的trigger
此插件暂不支持pipeline里面的DSL,可以在页面配置结合pipeline使用,插件支持以下两种触发事件
Build when a comment is added to JIRA, 当jira的issue的comment添加后触发build
Build when an issue is updated in JIRA, 当jira的issue的工作流状态变更后触发build,例如由状态测试->部署
以下是Build when a comment is added to JIRA
JQL filter
过滤webhook对应的issue范围,例如可以在项目维度过滤,只由pipeline_test项目内的issue才能触发此build
Comment pattern
jira与jenkins 通讯暗号,当jira端的issue添加内容为"rebuild"的comment后才触发build
参数传递-自定义字段
jira端可以自定义字段,在jira端通过webhook触发jenkins build的时候把这个字段值传递过来,例如可以通过jira配置流水线的分支、commit id等信息传递给jenkins来build
Jenkins parameter ,获取的jira传递的自定义字段的值复制给jenkins的变量 jira_commit,后续在流水线的step里面可以通过 ${jira_commit}使用
Custom Field ID ,jira端自定义了字段后会默认给该字段分配一个ID,可以通过如下jira的接口查看该ID,注意配置jenkins上只保留数字去掉customfileId
参数传递-内置字段
内置字段都是固定的参数名,例如issue的名就是 Issue attribute pah里面的key,通过key就能获取jira isse名
如下所示,pipeline_test 项目,ASD-4 issue key
流程验证
commnet 触发webhook
jira端触发jenkins build
comment 添加暗号 rebuild
jenkins触发build, 其中 ${jira_branch} 和 ${jira_commit}都是传过来的参数
二、jenkins构建过程把输出添加到jira comment
jenkins添加comment前提需要获取到对应issue 的名字,此参数值获取需要参考上文jira jenkins相关配置
创建python 脚本jira-comment.py
from jira import JIRA import sys # 检查参数个数 if len(sys.argv) < 3: print("请提供至少两个参数。") sys.exit(1) fi
issue_key = sys.argv[1]
issue_comment = sys.argv[2]
jiraobj = JIRA(server="http://xxx", basic_auth=('***', '***')) issue = jiraobj.issue("issue_key") jiraobj.add_comment(issue, "issue, issue_comment") # 添加评论 jiraobj.close()
在jenkins 调用