Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链

时间:2024-05-20 21:11:19

Jenkins集成Jira,GitLab

你好! 这是你我第一次使用 Jenkins集成Jira,GitLab 来打通DevOps后端的工具链条。如果你想学习如何使用Jenkins集成Jira, 可以仔细阅读这篇文章,了解一下各集成工具的配置。

Jenkins集成三方,内容总览

Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链

首先说明,Jenkins可以集成Jira,Jira也可以集成Jenkins ,插件不同,实现功能也不同。

  1. Jenkins插件安装-Jira插件配置
  2. Jenkins插件安装-GitLab插件配置
  3. GitLab插件安装-Jira插件配资
  4. GitLab触发Jenkins流水线作业

准备动作

  • 平台及工具安装(这部分不在这里叨叨,自行百度,我主要讲干活的部分)
  1. Confluence安装
  2. Jira安装
  3. Jenkins安装
  4. 提单给网络组同事,开通各个服务器之间的端口访问(Jira-Jenkins-GitLab之间通信)

Jenkins插件安装-Jira插件配置

Jenkins插件安装
说明:只需要Jenkins管理员安装一次,项目集成人员忽略此部分。

插件列表:
JIRA Integration for Jenkins
Jira Issue Updater
JIRA Pipeline Steps
JIRA plugin
JIRA Trigger Plugin
JiraTestResultReporter plugin
安装路径:Jenkins—— 系统管理 —— 插件管理——已安装
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链

Jenkins插件安装-GitLab插件配置

Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链
当Jira插件和GitLab插件安装完成后,抽空重启,准备做下面的动作。

Jenkins-Jira配置

进入系统配置里面,搜索JIRA Steps,进行配置,信息录入完毕记得点击测试是否通
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链
用户集成部分
Jenkins上创建项目pipeline流水线 job
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链

创建Pipeline脚本
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链

node {
// stage(‘edit issue’) {
// withEnv([‘JIRA_SITE=JIRA’]) {
// def testIssue = [fields: [ project: [key: ‘SWCTMYF’],
// summary: ‘New JIRA Created from Jenkins.’,
// description: ‘change’,
// issuetype: [name: ‘故障’]]]
//
// response = jiraEditIssue idOrKey: ‘TCTIN-3’, issue: testIssue
//
// echo response.successful.toString()
// echo response.data.toString()
// }
// }
stage(‘JIRA’) {
withEnv([‘JIRA_SITE=JIRA’]) { //JIRA_SITE 为上边配置的全局变量名
def comment = [ body: ‘test comment’ ]
//TCTIN-3为 JIRA上的问题ID
jiraAddComment idOrKey: ‘TCTIN-3’, input: comment
}
}
}
说明:
pipeline有两种写法,一种是申明式语法,一种是脚本化语法,此例为脚本语法
Jenkins Jira step有多个阶段的语法配置,此例子以添加注释说明,
其他语法请参考官方文档

GitLab插件安装-Jira插件配置

gitlab设置中打开jira插件(需要gitlab maintainer角色的权限)
具体项目——设置——集成——JIRA
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链
gitlab配置
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链
JIRA配置字段说明
Web URL: jira的web地址,
Jira API URL: 留空即可
Username/Email :jira用户名,配置为项目管理员或有项目权限的用户即可
Password/API token: jira用户密码,配置为项目管理员或有项目权限的用户即可
Transition ID :JIRA上的流程ID,可以通过API接口获取,获取方式见下文
如果只需要提交comment信息,此字段可以不配置
如果想通过gitlab commits 或 Merge Requests 修改jira问题状态,此字段必须填
多个ID 使用“,”号分隔

GitLab创建WebWook调用Jenkins流水线作业

拷贝Jenkins流水线作业中的GitLabURL和Token信息
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链

gitlab提交comment到Jira
在git提交或者合并分支的时候,comment字段只要带上 ISSUE-ID即可自动提交comment信息到jira上的 ISSUE-ID对应的问题注释中去

注意:

经测试,git 的commit 注释信息中 ISSUE-ID 可以放在第一行 的任何位置 ,一般建议放在行首
git 提交的注释信息如果有多行,则只会同步第一行到JIRA的问题注释中
git提交方式
gitlab web上(或者使用命令行),我们修改README.md文件,并提交,comment字段填写 “TCTIN-3关键字测试 Update README.md”

gitlab修改JIRA问题状态
不建议!经测试不是很好用!

gitlab提供了3个关键字触发器来修改 JIRA的问题状态

Resolves PROJECT-1
Closes PROJECT-1
Fixes PROJECT-1
PROJECT-1 为前文说说的ISSUE-ID,只有在commit 或者 合并主分支时才会触发这三个触发器。comment内容不会显示在jira的问题注释中。

官方参考链接
https://docs.gitlab.com/ee/user/project/integrations/jira.html#doc-nav

也可以在 gitlab集成JIRA的页面进入本地帮助文档。

错误处理
如果集成过程有报 类似“Requests to the local network are not allowed” 的错误,需要系统管理员勾选gitlab的允许本地连接

路径:

管理员打开 webhook和服务对本地网络的请求 设置——网络——外发请求 (如果项目集成不报错,本步骤可以忽略,一般本地集成才需要打开)
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链
好,最后测试是否通了:
Jira + Gitlab+Jenkins 三者之间协同形成DevOps工具链