You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab如何配置SUB项目的gitlab-ci.yml以触发MAIN项目流水线

实现SUB仓库提交触发MAIN仓库流水线的配置方法

前置准备

  • 首先在MAIN仓库生成具有流水线触发权限的访问令牌:进入MAIN仓库 → 「设置」→ 「访问令牌」,勾选api权限,生成后保存好令牌值
  • 将上述令牌配置为SUB仓库的CI变量:进入SUB仓库 → 「设置」→ 「CI/CD」→ 「变量」,新增变量名为MAIN_TRIGGER_TOKEN,值为刚才生成的令牌,勾选「掩码变量」避免令牌在日志中泄露

SUB项目gitlab-ci.yml配置方案

方案1:curl调用API触发(灵活支持传自定义参数)

trigger_main_pipeline:
  stage: trigger # 可根据需求调整为你现有流水线的任意阶段,比如最后一个阶段
  image: curlimages/curl:latest
  variables:
    MAIN_PROJECT_ID: "123456" # 替换为MAIN仓库的项目ID,可在MAIN仓库主页名称下方查看
    MAIN_TARGET_BRANCH: "main" # 替换为要触发的MAIN仓库目标分支
  script:
    - |
      curl --request POST \
        --form token=$MAIN_TRIGGER_TOKEN \
        --form ref=$MAIN_TARGET_BRANCH \
        --form "variables[SUB_COMMIT_SHA]=$CI_COMMIT_SHA" \ # 可选:将SUB仓库的提交SHA传入MAIN流水线作为参数,不需要可删除
        "https://你的GitLab服务域名/api/v4/projects/$MAIN_PROJECT_ID/trigger/pipeline"
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # 触发规则可自定义,比如仅推送到SUB默认分支时触发,需要全分支触发可改为 - when: always

方案2:GitLab原生trigger关键字触发(写法更简洁)

适合不需要传递复杂自定义参数的场景:

trigger_main_pipeline:
  stage: trigger
  trigger:
    project: 你的分组路径/main # 替换为MAIN仓库的完整项目路径
    branch: main # 替换为MAIN仓库的目标分支
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # 触发规则可按需调整

注意:使用该方案需要提前配置权限,在MAIN仓库的「设置」→「CI/CD」→「流水线权限」中,允许SUB仓库所属的用户/组拥有触发MAIN流水线的权限。


内容的提问来源于stack exchange,提问作者Santhosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:54:00