如何使Jenkinsfile中的Choice参数默认返回第一个元素?
让Jenkins Choice参数默认选中第一个选项的方法
嘿,我来帮你搞定这个问题!要让你的Choice参数默认返回第一个元素,其实有两种简单的方式,看你偏好哪种:
方法1:利用字符串格式的choices自动默认第一个选项
Jenkins Pipeline里,当你用换行分隔的字符串定义choices时,第一个选项会自动被设为默认值。不过如果遇到配置或Jenkins版本导致默认行为不生效的情况,更明确的方法会更稳妥。
方法2:明确指定defaultValue参数
如果你想强制确保默认值是第一个选项,可以把choices改成列表形式,然后加上defaultValue参数明确指定。这种方式兼容性更好,不会有默认行为失效的问题。
修改后的完整properties代码如下:
properties([ buildDiscarder(logRotator(/*artifactDaysToKeepStr:'15',*/ artifactNumToKeepStr: '10', daysToKeepStr: '3', numToKeepStr: '5000')), parameters( [ choice( choices: ['Site1', 'Site2', 'Site3', 'Site4', 'all'], description: 'What site ?', name: 'site', defaultValue: 'Site1' // 明确指定第一个选项为默认值 ), choice( choices: ['dev', 'test', 'uat', 'prod'], description: 'What environment ?', name: 'environment', defaultValue: 'dev' // 同样指定第一个选项为默认值 ) ] ), pipelineTriggers([cron('* * * * *')]) ])
补充说明
- 如果你习惯用换行分隔的字符串写法,也可以搭配
defaultValue使用:choice( choices: 'Site1\nSite2\nSite3\nSite4\nall', description: 'What site ?', name: 'site', defaultValue: 'Site1' ) - 之后在Stage的
sh操作里,直接通过params.site或params.environment就能获取到默认值(用户未修改参数时),比如:stage('Execute Script') { steps { sh "Running script for site: ${params.site}, environment: ${params.environment}" } }
内容的提问来源于stack exchange,提问作者Benj
相关产品推荐
相关产品推荐

