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

如何通过GitLab API触发Job并向Python脚本传递参数

如何通过GitLab REST API触发指定Job并传递参数

一、先调整.gitlab-ci.yml配置

你当前的test-job1直接使用$arg1无法接收外部传递的参数,需要先修改配置,明确声明要接收的变量:

build-job:
  stage: build
  script:
    - echo "Hello, $GITLAB_USER_LOGIN!"

test-job1:
  stage: test
  # 声明要接收的变量,可设置默认值或留空
  variables:
    ARG1: ""
    ARG2: ""
    ARG3: ""
  # 可选:添加规则,仅当触发时指定特定变量才运行该Job
  rules:
    - if: '$TRIGGER_TEST_JOB == "true"'
      when: always
    - when: never
  script:
    - python3 myproject/script/mydumbscript.py $ARG1 $ARG2 $ARG3

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

deploy-prod:
  stage: deploy
  script:
    - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
  environment: production

二、GitLab API触发请求格式

GitLab API无法直接触发单个Job,只能触发整个流水线,但可以通过变量控制仅运行目标test-job1。

必要准备

  • 拥有GitLab私有令牌(Personal Access Token),权限需包含api和read_repository
  • 获取项目ID(可在项目主页的「设置」→「通用」中找到)

curl请求示例

curl --request POST \
  --header "PRIVATE-TOKEN: 你的私有令牌" \
  --header "Content-Type: application/json" \
  --data '{
    "ref": "main", # 替换为你要触发的分支/tag名称
    "variables": [
      {"key": "TRIGGER_TEST_JOB", "value": "true"}, # 对应上述rules中的触发条件
      {"key": "ARG1", "value": "参数1内容"},
      {"key": "ARG2", "value": "参数2内容"},
      {"key": "ARG3", "value": "参数3内容"}
    ]
  }' \
  https://你的GitLab域名/api/v4/projects/项目ID/pipeline

关键说明

  1. 变量传递:通过variables字段传递的变量会成为全局流水线变量,所有Job都能访问;如果只想让test-job1访问,可改用job_variables字段(GitLab 13.10及以上版本支持)。
  2. Job过滤:通过rules配置,只有当TRIGGER_TEST_JOB为true时才运行test-job1,其他Job会自动跳过,实现仅触发目标Job的效果。
  3. 变量命名:GitLab CI中变量通常使用大写,避免与系统内置变量冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:42:37