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 调用

 

 

 

 

 

 

posted @ 2024-07-19 17:23  fanggege  阅读(3)  评论(0编辑  收藏  举报