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 sys
sys.path.append('/usr/lib/python2.7/site-packages')
import jira
from jira import JIRA
import os
# issueName="ANDY-1"
#获取jenkins传入的参数issueName
issueName=os.environ["issueName"];
# 获取jenkins传入的参数transitionID
transitionID=os.environ["transitionID"]
#判断如果参数为空,则退出程序且不报错
if issueName == "none":
print ("无需更改jira问题状态")
sys.exit(0)
print("当前选择的BUG ID为: " + issueName)
# 配置jira
myjira = 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 的构建状态。