通过GitLab的commit信息自动更新JIRA issue的状态及comments

JIRA是一个非常不错的开发团队管理工具。可以与gitlab进行无缝集成。

如何通过gitlab中git的提交信息触发JIRA中的issue状态更新,网上一搜就会有很多的教程。

这里我想再增加两个点:

1.Transition ID必须是你对应的工作流中的转换ID,在项目的工作流配置中进行查看,具体如图中红框所勾选出来的:

通过GitLab的commit信息自动更新JIRA issue的状态及comments

也可以通过如下网址进行获取:

https://**JIRA网址**/rest/api/2/issue/**issue ID**/transitions

上述请求将得到当前的issue ID对应的工作流的下个环节的transition ID的列表,得到的返回报文如下,其中的transitions[0/1/2].id就是你将填入gitlab配置中的transitionID,例如我希望在我每次提交的时候,可以关闭当前关联的issue,那么我需要填入gitlab中的就是'181'这个id,对应的下个状态就是“已修复”:

{
    "expand": "transitions",
    "transitions": [
        {
            "id": "131",
            "name": "方案如此",
            "to": {
                "self": "https://jira.citicgz.com/rest/api/2/status/10103",
                "description": "设计方案、业务需求就是这样设计,不属于缺陷",
                "iconUrl": "https://jira.citicgz.com/images/icons/statuses/generic.png",
                "name": "方案如此",
                "id": "10103",
                "statusCategory": {
                    "self": "https://jira.citicgz.com/rest/api/2/statuscategory/4",
                    "id": 4,
                    "key": "indeterminate",
                    "colorName": "yellow",
                    "name": "处理中"
                }
            }
        },
        {
            "id": "161",
            "name": "修复中",
            "to": {
                "self": "https://jira.citicgz.com/rest/api/2/status/3",
                "description": "开发人员正在进行缺陷修复工作",
                "iconUrl": "https://jira.citicgz.com/images/icons/statuses/inprogress.png",
                "name": "修复中",
                "id": "3",
                "statusCategory": {
                    "self": "https://jira.citicgz.com/rest/api/2/statuscategory/4",
                    "id": 4,
                    "key": "indeterminate",
                    "colorName": "yellow",
                    "name": "处理中"
                }
            }
        },
        {
            "id": "181",
            "name": "修复缺陷",
            "to": {
                "self": "https://jira.citicgz.com/rest/api/2/status/5",
                "description": "开发已修复缺陷,等待测试人员回归测试",
                "iconUrl": "https://jira.citicgz.com/images/icons/statuses/resolved.png",
                "name": "已修复",
                "id": "5",
                "statusCategory": {
                    "self": "https://jira.citicgz.com/rest/api/2/statuscategory/4",
                    "id": 4,
                    "key": "indeterminate",
                    "colorName": "yellow",
                    "name": "处理中"
                }
            }
        }
    ]
}

gitlab中支持填入多个jira的transition ID,中间通过','或者';'进行分割。

2.想要通过gitlab的提交触发jira的状态转换,必须要设置好gitlab上的默认分支。只有默认分支上的commit信息才能触发jira上的issue的状态变更。否则,非默认分支上的修改,只会触发jira的comment信息的更新。

具体的配置请搜索gitlab默认分支修改。如果你发现,gitlab上git的commit提交信息无法触发jira的transition状态变化,那一般是因为你不是在默认分支上提交。

一般默认分支应该是master分支。