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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:22:42