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

能否通过REST调用触发GitLab CI/CD的单个Job?

GitLab CI/CD:单独触发单个Job的实现方法

可以通过POST请求单独触发指定的单个Job,核心思路是用自定义变量控制Job的运行条件,结合GitLab的流水线触发API实现。

1. 修改.gitlab-ci.yml,添加Job触发规则

给每个Job添加rules配置,通过自定义变量TRIGGER_JOB来控制是否运行该Job。这样默认流水线(代码提交、手动触发全量)不受影响,只有当指定变量时才会单独运行目标Job:

build-job:
  stage: build
  script:
    - echo "Hello, $GITLAB_USER_LOGIN!"
  rules:
    - if: $TRIGGER_JOB == 'build-job' || $TRIGGER_JOB == null

test-job1:
  stage: test
  script:
    - echo "This job tests something"
  rules:
    - if: $TRIGGER_JOB == 'test-job1' || $TRIGGER_JOB == null

test-job2:
  stage: test
  script:
    - echo "This job tests something, but takes more time than test-job1."
    - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
    - echo "which simulates a test that runs 20 seconds longer than test-job1"
    - sleep 20
  rules:
    - if: $TRIGGER_JOB == 'test-job2' || $TRIGGER_JOB == null

deploy-prod:
  stage: deploy
  script:
    - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
  environment: production
  rules:
    - if: $TRIGGER_JOB == 'deploy-prod' || $TRIGGER_JOB == null

2. 用POST请求触发单个Job

调用GitLab的流水线API,携带认证信息和指定的TRIGGER_JOB变量即可触发目标Job:

示例curl命令(触发test-job1):

curl --request POST \
  --url "https://你的GitLab域名/api/v4/projects/你的项目ID/pipeline" \
  --header "PRIVATE-TOKEN: 你的访问令牌" \
  --form "variables[TRIGGER_JOB]=test-job1" \
  --form "ref=你的分支名" # 比如main或master

注意事项

  • 访问令牌需要拥有api和read_repository权限,可在GitLab个人设置的「访问令牌」页面生成。
  • 若只想通过API单独触发Job,可去掉规则中的$TRIGGER_JOB == null条件,这样只有指定变量时Job才会运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:23:20