如何在 GitLab 中的 MR Merge 上添加空提交以使用触发词处理 Jira 工单

How to Add an Empty Commit on MR Merge in GitLab to Progress Jira Tickets with Trigger Words

提问人:Krisna 提问时间:11/9/2023 最后编辑:1615903Krisna 更新时间:11/9/2023 访问量:34

问:

我正在使用 GitLab,我正在尝试利用一项功能,该功能可以根据提交消息中的特定触发词(例如“解决”、“关闭”或“修复”)将 Jira 工单自动移动到不同的进度状态,例如“完成”、“关闭”或“修复”。我遵循了提交约定,我的初始提交消息如下所示:

git commit -m "JIRA-653-feat: add new feature"

我的目标是确保当合并请求 (MR) 合并到主分支中时,它始终显示提交消息,例如“JIRA-1625-feat:添加新功能”。为了实现这一点,我决定在 MR 合并到主分支时添加一个空提交。我使用以下命令:

git commit --allow-empty -m "Fixes JIRA-653"

这个想法是,当 Jira 票证合并到主分支时,这个空提交应该将 Jira 票证的状态推进到“解决”或“修复”。

但是,我遇到了两个问题:

  1. 我不知道如何在我的 GitLab CI/CD 管道中获取当前 MR 分支的名称。

  2. 我不确定当 MR 合并到主分支时如何触发空提交的添加。

这是我在 GitLab CI/CD 管道中定义的工作:

add-empty-commit:
  stage: empty-commit
  script:
    - git config user.name "john.doe"
    - git config user.email "[email protected]"
    - git fetch && git rebase origin/main
    - echo $CI_COMMIT_BRANCH ## does not work in MR
    - git commit --allow-empty -m "Fixes Jira-653"
    - git push "https://project_access_token_name:$GITLAB_API_TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH.git" 'HEAD:mc' ## added hardcode branch name(mc).
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

我已经创建了一个 GitLab 访问令牌,该令牌具有从我的 CI/CD 管道对存储库的写入访问权限。

有人可以帮我解决这两个问题吗?


git gitlab-ci jira

评论


答:

2赞 1615903 11/9/2023 #1

源分支名称可以从合并请求事件中的变量中获取,请参阅 https://docs.gitlab.com/ee/ci/variables/predefined_variables.htmlCI_MERGE_REQUEST_SOURCE_BRANCH_NAME

合并的结果管道需要从“设置”-“合并请求”-“合并”选项中启用,这是一项高级功能。有关详细信息,请参阅 https://docs.gitlab.com/ee/ci/pipelines/merged_results_pipelines.html

您无需执行所有这些操作,只需在 GitLab 合并请求设置中修改默认合并消息即可满足您的需求。默认值是 ,如果分支名称始终与 JIRA ID 匹配,请将其更改为类似 .Merge branch '%{source_branch}' into '%{target_branch}'Fixes %{source_branch}

评论

0赞 Krisna 11/9/2023
多谢。。。我今天靠了点东西
0赞 Krisna 11/9/2023
我需要另一个建议。我的同事喜欢根据他们的名称创建 MR 分支名称。例如:kd/fix-bug 但是我们的提交约定是这样的:基于此,我可以获得第一个提交:gitlab.sok.fi/help/user/project/merge_requests/...。反正我可以得到“JIRA-653”票证ID。git commit -m "JIRA-653-feat: add new feature"