如何在Gitlab中按名称触发指定的Pipeline或Job
实现按名称触发指定GitLab CI Job的方案
1. 调整CI配置规则
核心实现逻辑是通过自定义CI变量控制Job的运行条件,仅当传入匹配的变量值时才运行目标Job,同时跳过所有默认流水线任务,完全不需要挪用environments相关能力。
修改后的配置示例如下:
# 手动触发的依赖更新Job update-dependencies: rules: # 仅当触发源为触发器、且传入的TRIGGER_JOB变量值匹配当前Job名称时才运行 - if: $CI_PIPELINE_SOURCE == "trigger" && $TRIGGER_JOB == "update-dependencies" when: always script: - update-dependencies.sh # 示例:常规流水线Job,所有默认要运行的Job都需要添加下面第一条规则 build: rules: # 只要存在TRIGGER_JOB变量就跳过当前Job,避免触发手动任务时跑默认流水线 - if: $TRIGGER_JOB when: never # 原有常规触发规则保留,比如主干分支提交时运行 - if: $CI_COMMIT_BRANCH == "main" when: always script: - build.sh
如果有多个同类手动Job,只要参照update-dependencies的规则模板配置,替换对应TRIGGER_JOB的匹配值即可。
2. 触发方式
2.1 curl API 触发
使用如下命令即可触发指定Job,替换对应占位参数即可:
curl --request POST \ --form "token=你的项目触发器令牌" \ --form "ref=要运行的分支名,比如main" \ --form "variables[TRIGGER_JOB]=update-dependencies" \ "https://你的GitLab域名/api/v4/projects/你的项目ID/trigger/pipeline"
2.2 页面点击触发
进入项目左侧菜单「CI/CD」->「流水线」,点击右上角「运行流水线」,选择对应分支,新增变量TRIGGER_JOB,值填写要触发的Job名称,点击「运行流水线」即可。
注意事项
- 所有常规流水线Job都必须添加
if: $TRIGGER_JOB when: never的规则,避免触发手动任务时运行默认任务 - 触发器令牌可以在项目「设置」->「CI/CD」->「流水线触发器」中创建获取
内容的提问来源于stack exchange,提问作者ST-DDT
相关产品推荐
相关产品推荐

