【问题标题】:Jenkinsfile: parameter precedenceJenkinsfile:参数优先级
【发布时间】: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


    【解决方案1】:

    不需要声明每个城市,只需添加一个带有默认值的字符串参数,并创建一个单独的阶段,如果用户没有输入,它将采用默认参数 如果这对您有用,请将答案标记为正确:-)

    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'
                    }
                }
            }
        } 
    }
    

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 1970-01-01
      • 2016-08-04
      • 2017-05-21
      • 2010-12-01
      • 1970-01-01
      • 2012-01-27
      • 2021-08-20
      • 1970-01-01
      相关资源
      最近更新 更多