代码之家  ›  专栏  ›  技术社区  ›  Krisna

如何在GitLab中添加MR Merge上的空提交以使用触发词进行Jira票证

  •  0
  • Krisna  · 技术社区  · 11 月前

    我正在使用GitLab,我正试图利用一个功能 Jira ticket 可以根据提交消息中的特定触发词,如“Resolves”、“Closes”或“Fixes”,自动移动到不同的进度状态,如“done”、“close”或“resolve”。我遵循了提交约定,我的初始提交消息如下所示:

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

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

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

    这个想法是,当Jira票证合并到主分支中时,这个空提交应该将其状态提升为“Resolves”或“Fixes”。

    然而,我遇到了两个问题:

    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管道对存储库进行写访问。

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


    1 回复  |  直到 11 月前
        1
  •  1
  •   1615903    11 月前

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

    合并的结果管道需要从设置-合并请求-合并选项中启用,这是一个高级功能。看见 https://docs.gitlab.com/ee/ci/pipelines/merged_results_pipelines.html 了解更多详细信息。

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