1. 实现功能综述
1.1 功能概述
| jira | 软件项目流程管理工具 | 
|---|---|
| gitlab | 代码管理工具 | 
| jenkins | 项目构建发布工具 | 
 
将 gitlab 与 jenkins 集成到 JIRA中,已实现如下功能:
- gitlab 中项目代码的提交记录与修改的描述信息能显示到 jira中对应的issue;
 - jenkins 构建发布后,在 JIRA 中显示 jenkins的构建;
 - JIRA 中的issue 状态改变后能触发jenkins构建;
 - jenkins 项目构建发布成功后能修改 JIRA 中issue 的状态。
 
1.2 结构图

2. 功能实现方式
为了配置方便,下面的配置使用 admin 帐号来配置演示。
地址说明:
gitlab: https://gitlab.zznode.com/
JIRA: http://jira.zznode.com/
jenkins: http://10.2.21.38:9080/
2.1 gitlab 中的 JIRA 连接配置
使用 admin 帐号来在 gitlab 中 进行 JIRA 配置


2.2 JIRA 中获取 issue 的工作流 id
使用 admin 帐号操作



2.3 JIRA 中的 jenkins插件安装配置
安装 jenkins插件

JIRA 中的 jenkins 配置



JIRA 中触发jenkins构建 配置 webhook
用来实现 JIRA 中的 issue 状态发生改变 ( In Progress —> In Review ) 来触发 jenkins 构建。
URL格式是:${Jenkins URL}/jira-trigger-webhook-receiver/
2.4 jenkins 配置 JIRA 的相关信息
安装 jira 插件
JIRA plugin 1.4.7 手动下载 ,离线安装 ( 1.5.x 用的时候有问题 )

jenkins 中的 JIRA 配置

jenkins 中触发 jira issue 状态的脚本
#!/usr/bin/python# -*- coding: utf-8 -*-import syssys.path.append('/usr/lib/python2.7/site-packages')import jirafrom jira import JIRAimport os# issueName="ANDY-1"#获取jenkins传入的参数issueNameissueName=os.environ["issueName"];# 获取jenkins传入的参数transitionIDtransitionID=os.environ["transitionID"]#判断如果参数为空,则退出程序且不报错if issueName == "none":print ("无需更改jira问题状态")sys.exit(0)print("当前选择的BUG ID为: " + issueName)# 配置jiramyjira = JIRA('http://jira.zznode.com/',basic_auth=('administrator', 'asb#1234'))print(myjira.user(myjira.current_user()))#指定需要改变状态的缺陷myissue = myjira.issue(issueName)#获取该问题的可选状态transitions = myjira.transitions(myissue)print(transitions)#print(transitions)status=[(t['id'], t['name']) for t in transitions]print("该问题当前可选的状态为: " )for i in status:print(i)#修改问题的状态myjira.transition_issue(myissue,transitionID)
jenkins 的工程配置示例

2.5 注意事项
- 要先在 gitlab中配置好 JIRA 后, 再在gitlab中新建 project。 直接使用旧的project 可能使用 JIRA 的关联不生效。
 - gitlab 中的jira配置不要有 最后不要有 
/,否则 gitlab中无法跳转到 jira。 - 进行插件的安装时, 必须使用 admin 帐号。 各组件使用插件连接时,要注意给到相应的权限,否则可能部分功能无法显示,如: jira中的 jenkins的构建信息。
 - 当代码有改动后, 再构建 jenkins,jenkins 的构建信息才能显示到 jira中。 没有代码改动,重复执行是不会显示到 jira 中的。
 - jira 要开启 允许远程 API调用,否则 gitlab 的 message 无法关联到 jira。 
在 JIRA中,系统设置中查看 - JIRA 中 jenkins工程的 的同步要勾选上,否则 在JIRA中无法看到 jenkins 的构建状态。
 


