如何配置参数化流水线自动切换RELEASE/DEBUG构建参数无需手动修改
解决方案
你无需修改现有构建阶段的判断逻辑,仅需在参数初始化阶段增加时间自动判断逻辑,覆盖参数默认值即可实现需求,修改后的完整流水线代码如下:
pipeline { stages { stage('Setup parameters') { steps { script { properties([ parameters([ choice( defaultValue: 'RELEASE', choices: ['RELEASE', 'DEBUG'], name: 'BUILD_CONFIG' ), ]) ]) // 仅对SCM自动触发的构建执行时间判断,不影响手动运行时的参数选择 def isScmTriggered = currentBuild.buildCauses.any { it.class.simpleName == 'SCMTriggerCause' } // 如需适配指定时区,可使用下方注释的代码,替换TimeZone参数为你所在时区即可 // def currentHour = new Date().format('HH', TimeZone.getTimeZone('Asia/Shanghai')).toInteger() def currentHour = new Date().hours // 12点到13点区间对应24小时制小时值为12 if (isScmTriggered && currentHour == 12) { params.BUILD_CONFIG = 'DEBUG' } } } } stage('Build release'){ when { expression { return params.BUILD_CONFIG == 'RELEASE' } } steps{ script { def msbuild = tool name: 'MSBuild', type: 'hudson.plugins.msbuild.MsBuildInstallation' bat "\"${msbuild}\" /Source/project-GRDK.sln /t:Rebuild /p:configuration=\"Release Steam D3D11\"" } } } stage('Build debug'){ when { expression { return params.BUILD_CONFIG == 'DEBUG' } } steps{ script { def msbuild = tool name: 'MSBuild', type: 'hudson.plugins.msbuild.MsBuildInstallation' bat "\"${msbuild}\" /Source/project-GRDK.sln /t:Rebuild /p:configuration=\"Debug Steam D3D11\"" } } } } }
逻辑说明
- 保留原有参数定义,默认值仍为RELEASE,手动触发流水线时的参数选择不受影响
- 仅SCM变更自动触发的构建会执行时段判断,其他触发来源的构建不会被自动修改参数
- 12:00-13:00时段内的SCM触发构建会自动将
BUILD_CONFIG参数覆盖为DEBUG,自动执行debug构建任务,其余时段仍默认执行RELEASE构建 - 若Jenkins系统时区和你所在时区不一致,可使用代码中注释的时区适配代码,指定对应时区即可避免时间判断偏差
内容的提问来源于stack exchange,提问作者Jesus Fernandez
相关产品推荐
相关产品推荐

