如何通过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
相关产品推荐
相关产品推荐

