Jenkinsfile:参数优先级



假设我有一个Jenkinsfile,其中包含基于以下条件的阶段。然后,在特定管道项目的Jenkins UI中,我可能有也可能没有为特定作业定义名为CITY的(全局变量字符串参数(参数。

如果CITY参数是在Jenkins项目的UI中定义的,我希望它使用用户输入的任何城市。如果用户没有输入任何内容,我希望它默认为"0"中的值;全局属性";(在"管理Jenkins">"配置系统">"全局属性"中(

如果CITY参数没有在UI中定义(比如有人忘记在Pipeline Project UI中定义该参数(,我希望它以某种方式默认为Jenkinsfile中定义的值。

简单地说,我想在Jenkinsfile中定义一个默认值,这样,如果有人忘记在Job UI中配置全局变量字符串参数,就会使用默认值。

我对Jenkins和Groovy还很陌生,我不太确定如何做到这一点。我如何在Jenkinsfile中定义一个可以被UI中的用户输入覆盖的默认参数;全局属性";?欢迎提出任何建议。


pipeline {
agent any
stages {
stage('Always') {
steps {
script {
sh 'echo Welcome CITY=$CITY'

}
}
stage('Chicago') {
when {
expression {
params.CITY == "CHICAGO"
}
}
steps {
script {
sh 'echo Welcome to Chicago  "CITY=$CITY"'
} 
} 
}
stage('NYC') {
when {
expression {
params.CITY == "NYC"
}
}
steps {
script {
sh 'echo Welcome to NYC  "CITY=$CITY"'
} 
} 
}
} 
}

不需要声明每个城市,只需添加一个具有默认值的字符串参数,并创建一个阶段,如果用户没有输入默认参数,该阶段将使用默认参数如果这对你有效,请将答案标记为正确:-(

pipeline {
agent any
parameters {
string(name: 'CITY', defaultValue: 'TEL_AVIV', description: 'this is the default if user dosnt enter parameter in the UI')
}
stages {
stage('CITY') {
steps {
script {
sh 'echo Welcome $CITY'
}
}
}
} 
}

最新更新