1. 实现功能综述

1.1 功能概述

jira 软件项目流程管理工具
gitlab 代码管理工具
jenkins 项目构建发布工具


将 gitlab 与 jenkins 集成到 JIRA中,已实现如下功能:

  1. gitlab 中项目代码的提交记录与修改的描述信息能显示到 jira中对应的issue;
  2. jenkins 构建发布后,在 JIRA 中显示 jenkins的构建;
  3. JIRA 中的issue 状态改变后能触发jenkins构建;
  4. jenkins 项目构建发布成功后能修改 JIRA 中issue 的状态。

1.2 结构图

image.png

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 配置

image.png

image.png

2.2 JIRA 中获取 issue 的工作流 id

使用 admin 帐号操作

image.png

image.png

image.png

2.3 JIRA 中的 jenkins插件安装配置

安装 jenkins插件

image.png

JIRA 中的 jenkins 配置

image.png

image.png

image.png

JIRA 中触发jenkins构建 配置 webhook

用来实现 JIRA 中的 issue 状态发生改变 ( In Progress —> In Review ) 来触发 jenkins 构建。

URL格式是:${Jenkins URL}/jira-trigger-webhook-receiver/
image.png

2.4 jenkins 配置 JIRA 的相关信息

安装 jira 插件

JIRA plugin 1.4.7 手动下载 ,离线安装 ( 1.5.x 用的时候有问题 )

image.png

jenkins 中的 JIRA 配置

image.png

在这里面 配置上所有的 jira 标签的 配置
image.png
image.png
image.png

jenkins 中触发 jira issue 状态的脚本

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. import sys
  4. sys.path.append('/usr/lib/python2.7/site-packages')
  5. import jira
  6. from jira import JIRA
  7. import os
  8. # issueName="ANDY-1"
  9. #获取jenkins传入的参数issueName
  10. issueName=os.environ["issueName"];
  11. # 获取jenkins传入的参数transitionID
  12. transitionID=os.environ["transitionID"]
  13. #判断如果参数为空,则退出程序且不报错
  14. if issueName == "none":
  15. print ("无需更改jira问题状态")
  16. sys.exit(0)
  17. print("当前选择的BUG ID为: " + issueName)
  18. # 配置jira
  19. myjira = JIRA('http://jira.zznode.com/',basic_auth=('administrator', 'asb#1234'))
  20. print(myjira.user(myjira.current_user()))
  21. #指定需要改变状态的缺陷
  22. myissue = myjira.issue(issueName)
  23. #获取该问题的可选状态
  24. transitions = myjira.transitions(myissue)
  25. print(transitions)
  26. #print(transitions)
  27. status=[(t['id'], t['name']) for t in transitions]
  28. print("该问题当前可选的状态为: " )
  29. for i in status:
  30. print(i)
  31. #修改问题的状态
  32. myjira.transition_issue(myissue,transitionID)

jenkins 的工程配置示例

image.png

2.5 注意事项

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

3. 参考资料

  1. Devops自动化集成部署-jenkins与jira集成
  2. JIRA集成gitlab
  3. JIRA集成jenkins配置
  4. jenkins JIRA 配置
  5. JIRA中issue状态触发jenkins