解决多项目共用一个Jenkinsfile文件参数被覆盖的问题

2ba9JB
有时,我们想创建使用同一Jenkinsfile而不是单个Jenkinsfile的多个作业.例如,发生这种情况可能是因为我们要维护根据参数划分的日志,而不是在单个任务上寻找正确的日志.
Jenkins项目上,所有的项目都是共用同一个Jenkinsfile文件进行流水线构建,但是在这种场景下会出现已配置的参数被Jenkinsfile文件里面定义的parameters覆盖的问题,以往的项目都是不在Jenkinsfile里面定义参数,而是通过Jenkins控制台手动配置,然而。。。这并不是最好的解决方案,这个不符合我这个懒人的习惯,最后发现其实能通过代码解决这个巨坑~

解决方案

通过三目表达式即可解决~代码片段如下:


/**
 * 预先定义流水线的构建参数
 **/
 properties([
    parameters([
        string(defaultValue:params.CLUSTER_NAMESPACE ?: 'test',name:'CLUSTER_NAMESPACE',description:'集群部署命名空间',trim: true),
        string(defaultValue:params.CODE_GIT_REPO ?: "https://xxxxx.git",name:'CODE_GIT_REPO',description:'代码Git仓库地址',trim: true),
        string(defaultValue:params.CODE_GIT_BRANCH ?: 'master',name:'CODE_GIT_BRANCH',description:'代码Git分支',trim: true),
        string(defaultValue:params.REPLICA_COUNT ?: '3',name:"REPLICA_COUNT",description:'部署容最小数量',trim: true),
        string(defaultValue:params.MAX_REPLICA_COUNT ?: '10',name:"MAX_REPLICA_COUNT",description:'部署容器最大数量',trim: true),
        string(defaultValue:params.DING_MOBILE ?: '',name:"DING_MOBILE",description:'钉钉艾特手机号码',trim: true),
        string(defaultValue:params.LIVENESSPPRBE_INITIAlDELAYSECONDS ?: '10',name:"LIVENESSPPRBE_INITIAlDELAYSECONDS",description:'存活探针-延迟探测时间(秒)',trim: true),
        string(defaultValue:params.READINESSPPRBE_INITIAlDELAYSECONDS ?: '10',name:"READINESSPPRBE_INITIAlDELAYSECONDS",description:'就绪探针-延迟探测时间(秒)',trim: true),
        string(defaultValue:params.POD_CPU ?: '2',name:"POD_CPU",description:'容器CPU',trim: true),
        string(defaultValue:params.POD_MEMORY ?: '4Gi',name:"POD_MEMORY",description:'容器内存',trim: true),
    ])
])