【问题标题】:How to overwrite global variable in jenkins groovy如何在jenkins groovy中覆盖全局变量
【发布时间】:2020-12-07 08:59:17
【问题描述】:

我正在编写一个 jenkins groovy 脚本。我在脚本的开头定义了一个全局变量,它在整个 groovy 中都被使用。 使用该 groovy 的用户可以根据需要修改全局变量的值。

现在的问题是我想为全局变量设置一个默认值,以防用户将全局变量留空,如何在 Groovy 中实现这个场景?

提前致谢。 下面是我的 groovy 的样子

String var1 = " "
String var2 = " "

pipeline {
  agent any
  stages {

    stage('Stage 1') {
      steps {
        script {
          if(var1 == " ") {
              var1 = <default value>
          }
        }
      }
    }

    stage('Stage 2') {
      steps {
        script {
          docker login <here i want to use default var1>
        }
      }
    }

  }
}

【问题讨论】:

    标签: jenkins groovy jenkins-groovy


    【解决方案1】:
    if(!MY_GLOBAL_VAR){
        MY_GLOBAL_VAR = <default value>
    }
    

    或更明确

    if(MY_GLOBAL_VAR == null){
        MY_GLOBAL_VAR = <default value>
    }
    

    【讨论】:

    • 感谢 smelm 的评论,但下面是我的 groovy 的样子,它只改变了那个特定阶段的值,但我希望我的变量被整个脚本覆盖 String var1 = " " String var2 = " " pipeline { agent any stages { stage('Stage 1') { steps { script { if(var1 == " ") { var1 = } } } } stage('Stage 2') { steps { script { docker login } } } } }
    • 您可以尝试省略类型声明(省略String)这将使其成为全局
    【解决方案2】:
    if(!MY_GLOBAL_VAR){
        MY_GLOBAL_VAR = <default value>
    }
    

    或更明确

    if(MY_GLOBAL_VAR){
        MY_GLOBAL_VAR = <default value>
    }
    

    如果您在声明式管道中运行它,则需要将其包围在 script{} 块中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      相关资源
      最近更新 更多