【发布时间】:2021-04-21 23:55:36
【问题描述】:
假设我有一个 Jenkinsfile,其中包含基于以下条件的阶段。然后,在特定管道项目的 Jenkins UI 中,我可能会或可能不会为特定作业定义名为 CITY 的(全局变量字符串参数)参数。
如果在 UI 的 Jenkins 项目中定义了 CITY 参数,我希望它使用用户输入的任何城市。如果用户没有输入任何内容,我希望它默认为“全局属性”中的值(在“管理 Jenkins > 配置系统 > 全局属性”中)
如果未在 UI 中定义 CITY 参数(比如有人忘记在 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"'
}
}
}
}
}
【问题讨论】:
标签: jenkins groovy continuous-integration jenkins-pipeline pipeline