含Choice参数的Jenkins Cron定时任务配置失败,求解决方案
解决带ChoiceParam的Jenkins定时任务配置问题
问题描述
使用jCASC编写Groovy脚本配置带ChoiceParam参数的Jenkins Cron定时任务时,出现TimerTrigger实例化错误,无法同时实现参数配置与每6小时执行的需求。
原错误脚本
properties { pipelineTriggers { triggers { cron { spec('* h/6 * * *') } } } } parameters { stringParam('JENKINS_FILE_BRANCH', 'branch name', 'The Branch with the Jenkins File') choiceParam('SERVICE_NAME', ['service1' 'serivce 2'], 'Select a service to check the status for') choiceParam('DC', ['DC1', 'CD2'], 'Select a service to check the status for') }
报错信息
ERROR: Could not instantiate {spec=* h/6 * * *} for hudson.triggers.TimerTrigger: java.lang.reflect.InvocationTargetException
修复方案
问题源于两处语法/配置错误,修正后即可正常运行:
1. 修正ChoiceParam的语法错误
第一个choiceParam的选项数组中,service1与service 2之间缺少逗号,且存在拼写错误(serivce改为service),导致脚本解析失败,需补充逗号并修正拼写。
2. 修正Cron触发器的配置写法
pipelineTriggers中无需嵌套cron { spec() }结构,直接使用cron('表达式')格式即可;Jenkins Cron中每6小时执行的标准表达式为* */6 * * *(h/6写法也支持,但*/6兼容性更强)。
修复后的完整脚本
properties { pipelineTriggers([cron('* */6 * * *')]) } parameters { stringParam('JENKINS_FILE_BRANCH', 'branch name', 'The Branch with the Jenkins File') choiceParam('SERVICE_NAME', ['service1', 'service 2'], 'Select a service to check the status for') choiceParam('DC', ['DC1', 'DC2'], 'Select a data center to check the status for') }
额外说明
- 定时任务触发时会使用参数默认值执行,手动触发时可选择自定义参数值;
- 已修正
DC参数的描述文本(原描述与参数用途不符),可根据实际需求调整。
内容的提问来源于stack exchange,提问作者Mehboob Alam
相关产品推荐
相关产品推荐

