敏捷软件开发中,很多公司会用到JIRA进行任务管理,而代码则用Gerrit进行管理存放。项目管理有时会希望与某个JIRA任务关联的代码提交或合并能自动在JIRA的comment里反映出来。本文将介绍为实现上述目标,具体配置步骤。
首先,需要在Gerrit上安装插件:its-jira,详细步骤请参考:Plugin "its-jira" forGerrit - 知乎 (zhihu.com)
涉及到的配置文件主要包括:gerrit配置文件,规则配置文件。如果需要定制comment内容还需要一个模板配置文件。
- gerrit配置文件
etc/gerrit.config:
……
[commentlink "its-jira"]
match = .*(PROJECT-[A-Z]+-[0-9]+)
link = https://jira_url/browse/$1
[its-jira]
url=https://jira_url
username=jira_user_name
password=jira_user_password
注意:该配置文件将实现Gerrit和JIRA的连接,并在Gerrit上检测commit message, 当commit message里面符合match定义的规则,就会将符合该规则的字符串增加超链接,连接到link定义的jira位置。如上列中,当Gerrit上的commit message里面有PROJECT-A-123,则 PROJECT-A-123会有超链接标记,点击就会跳转到JIRA里对应的issue。实际中大家需要使用项目上实际的match规则和url等。
- 规则配置文件
etc/its/actions.config:
[rule "open"]
event-type = patchset-created
action = add-standard-comment
[rule "merge"]
event-type = change-merged
action =add-soy-comment merge
event-type和Gerrit的事件类型是一致的,包含change-abandoned, change-restored, comment-added, draft-published, private-state-changed, ref-updated, rerun-checks, topic-changed等。
action可以使用标准模板(add-standard-comment),也可以自定义模板,如merge模板(add-soy-comment merge)
标准模板显示效果如下:
JIRA用户 added a comment - 年-月-日 时:分
Change XXX had a related patch set uploaded by 代码提交人:
commit message的内容
gerrit的提交URL
- 自定义模板配置文件
etc/its/templates/ merge.soy:
{namespace etc.its.templates}
{template .merge kind="text"}
{@param changeNumber: string}
{@param commitMessage: string}
{@param branch: string}
{@param formatChangeUrl: string}
{@param submitterName: string}
Change {$changeNumber} merged into {$branch} by {$submitterName}\\
{$commitMessage}\\
CommitURL: {$formatChangeUrl}
{/template}
上述示例的模板显示效果如下:
Change XXX merged into 分支名 by 提交人
commit message的内容
gerrit的提交URL
注意:gerrit要重启生效。
gerrit上插件安装后,在gerrit_url/plugins/its-jira/Documentation/index.html里面可以看到相关参考文档。