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

如何通过Jenkins JobDSL触发带有参数的任务?

如何用Jenkins JobDSL触发带参数的任务

当然可以实现!你提到的queue方法确实在基础用法里只接受任务名称字符串或Job对象,但它其实有个实用的重载方式,支持传递构建参数——这正是你需要的功能。

下面分两种场景给你具体示例:

场景1:触发自己用JobDSL定义的带参数任务

先定义包含参数的任务,再触发时指定参数值:

// 第一步:定义带参数的目标任务
def deployJob = job('prod-deploy-job') {
  parameters {
    // 定义字符串参数:部署环境
    stringParam('TARGET_ENV', 'dev', '要部署的目标环境')
    // 定义选择参数:部署模式
    choiceParam('DEPLOY_MODE', ['rolling', 'blue-green'], '部署模式')
  }
  // 这里可以添加任务的其他配置,比如构建步骤、触发器等
}

// 第二步:触发任务并传递自定义参数
queue(deployJob, [
  parameters: [
    // 对应字符串参数,指定值为prod
    [$class: 'StringParameterValue', name: 'TARGET_ENV', value: 'prod'],
    // 对应选择参数,指定值为blue-green
    [$class: 'ChoiceParameterValue', name: 'DEPLOY_MODE', value: 'blue-green']
  ]
])

场景2:触发已存在的外部带参数任务

如果目标任务不是用JobDSL定义的,直接用任务名称结合参数map即可:

queue('existing-release-job', [
  parameters: [
    // 字符串参数:版本号
    [$class: 'StringParameterValue', name: 'RELEASE_VERSION', value: 'v2.3.1'],
    // 布尔参数:是否跳过测试
    [$class: 'BooleanParameterValue', name: 'SKIP_TESTS', value: true],
    // 密码参数:部署密钥(注意value是明文,实际建议用凭据)
    [$class: 'PasswordParameterValue', name: 'DEPLOY_KEY', value: 'xxxxxx']
  ]
])

关键注意点

  • 不同参数类型对应不同的ParameterValue实现类,比如布尔参数用BooleanParameterValue、密码参数用PasswordParameterValue,要和目标任务里的参数类型一一对应;
  • 如果参数值需要从JobDSL的变量或外部配置获取,直接替换value字段即可,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:50:13