Jenkins脚本式Pipeline:定时触发时跳过交互式输入步骤?
实现Jenkins脚本式Pipeline区分手动/定时触发的输入逻辑
核心思路是通过判断构建的触发原因,区分手动触发和定时自动触发,仅在手动触发时执行交互式输入步骤,定时触发时使用预设的默认参数。
具体实现代码
// 1. 定义定时触发时使用的默认参数(需与input参数结构完全匹配) def defaultOptions = [ param1: '默认值1', param2: '选项B' // 替换为你实际input参数对应的键值对 ] // 2. 判断当前构建是否为定时触发 def isTimerTrigger = currentBuild.buildCauses.any { cause -> cause._class == 'hudson.triggers.TimerTrigger$TimerTriggerCause' } def options if (isTimerTrigger) { echo "检测到定时触发,使用预设默认参数" options = defaultOptions } else { // 手动触发时弹出交互式输入框 options = input message: 'Select options', parameters: [ string(name: 'param1', defaultValue: '默认值1', description: '参数1说明'), choice(name: 'param2', choices: ['选项A', '选项B'], description: '参数2说明') // 替换为你原来的input参数定义 ] } // 后续业务逻辑:使用options参数 echo "最终使用的参数:${options}"
关键注意事项
- 参数结构一致性:
defaultOptions的键名和数据类型必须和input步骤返回的参数完全一致,避免后续逻辑出现类型或键名不匹配的错误。 - 扩展触发源判断:如果需要支持其他自动触发场景(如SCM代码提交触发),可以扩展
isTimerTrigger的判断条件,比如添加对SCM触发原因的判断,统一使用默认参数。 - 手动触发的定义:这里的手动触发包括直接点击"Build Now"启动的构建,此时会正常弹出交互式输入框。
内容的提问来源于stack exchange,提问作者sparrowt
相关产品推荐
相关产品推荐

