问题引入
技术工具
目前, 使用以下工具进行项目开发工作。
- 开发工具: Intellij IDEA
- 代码版本控制: Git
- 代码托管平台(内部搭建): Gitlab
- Issue追踪系统: Redmine
开发流程(大致)
- 产品提出相关需求,并在
Redmine
上创建需求对应的Issue
- 技术人员给出实现需求的设计,并在
Redmine
上产品创建Issue
下创建对应的子Issue
。 - 技术人员进行开发,拉取分支(分支名包含
Redmine中的Issue编号
),开发完成。 - 提交测试
- 测试完成,产品验收。
- 上线
痛点
我想要的最终目的:
- 快速定位:开发人员可以根据
Git
的提交信息快速定位代码改动所属的需求。因此,我们在提交代码填写提交信息
的时候,都会带上本地提交的所属的Redmine
上创建的Issue
编号。
该目的表现在以下两个方面:
-
本地
:git
提交的消息(包含Redmine
的Issue
编号)怎么和Redmine
系统中的Issue
进行关联。 -
Gitlab
:git
提交的消息(包含Redmine
的Issue
编号)怎么和Redmine
系统中的Issue
进行关联。
解决
参考Apache Flink项目
我发现Apache Flink
项目是通过JIRA
作为问题追踪系统,GitHub
作为代码库托管平台,Git
作为代码版本管理工具。这和我使用的工具很像。 于是,通过查询Gitlab文档发现它也是可以和Redmine
进行集成的,让Redmine
作为问题追踪系统。 这就解决了痛点
中的2.
另外,我发现Apache Flink 项目在Intellij IDEA
中的提交信息中包含JIRA
上创建的ISSUE
也是通过点击进入到ISSUE
对应的页面的。查看Intellij IDEA文档得到结局方案。
Gitlab和Redmine集成
官网文档参考: https://docs.gitlab.com/ee/user/project/integrations/redmine.html#reference-redmine-issues-in-gitlab
使用Redmine
作为Gitlab
的外部问题追踪系统。需要进行以下配置:
- 进入你
Gitlab
项目界面 - 点击
Setting
-> 找到Integrations
- 滑动鼠标,点击选择:
Redmine
-
勾选
Action
复选框 -
填写以下几个必填项
- Project URL: 填写你
Redmine
中为该Gitlab
创建的项目地址 - Issue地址: 这个地址就是你
Issue
页面的URL,只是把最后的数字替换成:id
- 新建Issue地址: 这个URL目前没有使用,在以后得版本中可能会被删除
假设:
Redmine
的域名为:https://redmine.example.com
- 配置
Redmine
的项目名为:gitlab
则,这里给出一个配置的具体示例
- Project URL: https://redmine.example.com/projects/gitla
- Issue URL: https://redmine.example.com/issues/:id
- New Issue URL: https://redmine.example.com/projects/gitlab/issues/new
- Project URL: 填写你
-
填写好以后, 点击:
Test setting
. 出现successful
字样就是成功了。 -
点击:
Save changes
保存
你配置好以后,就可以看到在你项目的左侧栏
中会出现Redmine
选项,点击可以进入你配置的Redmine
项目链接。
配置完成以后,如何在Git commit
提交的消息中引用呢?
- 短引用(不推荐,会和
Gitlab
自身的Issue
系统冲突,如果两个Issue
编号相同,发生冲突后,以Gitlab
内存为准):#<ID>
,比如:Redmine
中的Issue
编号为100
, 则你可以在git
提交信息中使用:#100
引用该Issue
编号。 - 长引用(推荐):
<PROJECT>-<ID>
, 比如: 你配置的项目为gitlab
,Redmine
中的Issue
编号为100
, 则你可以在git
提交信息中使用:GITLAB-100
(注意:这里项目名需要全大写) 引用该Issue
编号。
代码提交到Gitlab以后,就可以根据<PROJECT>-<ID>
自动生成链接到Redmine
的链接了。
Intellij IDEA本地配置
本地配置参考Intellij IDEA文档: https://www.jetbrains.com/help/idea/handling-issues.html
以下是配置步骤:
-
Intellij IDEA
->Setting...
(Mac系统:command + ,
) -
Version Controll
->Issue Navigation
-> 点击+
->Add Issue Navigation Link
![c4bde2ac4d152be1f770ef3eeb8b04fa.png](/usr/uploads/images/idea-setting.png -
配置
- Issue ID(regular express) : 正则匹配
Git commit
提交信息里面的内容 - Issue Link: 将匹配到的
Issue ID
内容, 添加这里配置的超链接。
Explame 这里是让你实时验证你上面填写的内容
- Issue ID :输入待验证的内容
- Issue link : 显示通过以上填写的正则匹配到以后添加的链接地址
假设: 我们需要匹配提交信息中包含POLARIS-111
这种格式的内容,匹配到以后给这个匹配内容添加一个超链接,连接到https://example.com/issue/111
, 我们可以进行一下配置:
配置说明:
POLARIS-(\d+)
: 这个正则匹配内容https://example.com/issue/$1
: 这里是给上面匹配内容刚添加的超链接, 其中$1
使用正则中反向引用,这里代码匹配到的数字,也就是111
-
点击
OK
-> 点击OK
-
查看Git提交历史记录 (Mac:
command + 9
)
可以看到已经添加上超链接了。 点击是可以跳转的。
总结
通过以上配置,我们将Gitlab
和Redmine
进行的集成,可以轻松的通过提交的消息包含Issue
链接到Redmine
系统。同时本地Intellij IDEA
也可以此操作,可以很方便定位问题。
评论 (0)