GitLab合并development到master后自动触发反向合并MR求助
给你列几个容易漏掉的排查方向,按优先级推进:
检查项目的Pipeline Schedule
进入项目「CI/CD」→「Schedules」,看看是否存在定时任务或绑定master分支合并事件的流水线任务,这类任务里可能藏着创建反向MR的逻辑。排查CI模板继承
你的.gitlab-ci.yml可能引用了组级别或GitLab实例级的CI模板,这些外部模板里可能包含自动创建MR的job。查看文件顶部的include指令,比如是否引入了其他yaml文件,去对应模板里找有没有用glab工具或GitLab API创建MR的代码。自托管Runner的自定义脚本
如果使用了自行部署的GitLab Runner,检查Runner的config.toml配置文件,看看pre_build_script或post_build_script中有没有构建完成后自动执行创建MR的命令。查看项目审计日志
进入项目「Settings」→「Audit Events」,找到那条自动创建MR的记录,查看操作执行者是谁——如果是服务账号或特定用户,顺着这个账号就能追踪到对应的脚本或定时任务。排查CI Job的隐藏脚本
哪怕当前.gitlab-ci.yml看起来正常,也要检查所有job的before_script、after_script,或者是否调用了项目内的其他脚本文件(比如scripts/auto-merge.sh)。这类脚本里可能会通过curl调用GitLab API创建MR,示例代码如下:curl --request POST --header "PRIVATE-TOKEN: $TOKEN" "https://your-gitlab-domain/api/v4/projects/$CI_PROJECT_ID/merge_requests" --form "source_branch=master" --form "target_branch=development" --form "title=Merge Master to Develop"检查外部定时脚本/服务
确认是否有服务器上的cron任务或第三方服务在监听GitLab的webhook事件,一旦检测到master分支有合并操作,就自动触发反向MR的创建。可以排查服务器的定时任务列表,或者GitLab WebHooks中是否有遗漏的外部回调地址。
内容的提问来源于stack exchange,提问作者Takuhii

