如何编写带多参数的Jenkins Cron定时任务?
Jenkins定时构建带参数失效的解决方法
你的问题出在Jenkins定时任务(Cron)表达式里不能直接追加参数键值对——标准Cron语法只支持时间部分,参数需要用专门的方式传递,下面分场景给出解决方案:
流水线(Pipeline)项目
方案1:在Pipeline脚本中设置定时触发的默认参数
在参数定义逻辑里判断当前构建是否为定时触发,若是则自动填充预设参数,手动构建时仍保留参数输入能力。修改你的Pipeline参数部分:
parameters { string( name: 'dog_type', defaultValue: params.dog_type ?: (currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause') ? 'poodle' : ''), description: '犬种' ) string( name: 'dog_name', defaultValue: params.dog_name ?: (currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause') ? 'Molly' : ''), description: '狗狗名字' ) booleanParam( name: 'generate_image', defaultValue: params.generate_image ?: (currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause') ? true : false), description: '是否生成图片' ) }
之后定时表达式只需写H 0 * * 1,无需附加任何参数。
方案2:使用Parameterized Scheduler插件
安装Parameterized Scheduler Plugin后,在项目配置的「Build Triggers」中选择「Parameterized Timer Trigger」,调度框按以下格式填写:
H 0 * * 1 % dog_type=poodle; dog_name=Molly; generate_image=True
注意:时间表达式与参数之间用%分隔,多参数用分号;隔开。
自由风格项目
直接使用上述的Parameterized Scheduler插件,配置方式和方案2一致,插件会在定时触发时自动传入指定参数。
额外排查点
- 确认参数名称完全匹配(Jenkins参数大小写敏感,比如
generate_image不能写成Generate_Image) - 查看Jenkins系统日志(Manage Jenkins → System Log),检查定时任务触发时是否有参数相关错误
- 确保配置定时任务的Jenkins用户拥有足够的项目权限
内容的提问来源于stack exchange,提问作者Gn0my
相关产品推荐
相关产品推荐

