【问题标题】:Check if ENV property is declared in Jenkins pipeline检查是否在 Jenkins 管道中声明了 ENV 属性
【发布时间】:2020-11-25 23:25:39
【问题描述】:

在我的 Jenkins 管道中,我有:

library 'my-shared-library'
pipeline {
  environment {
    MY_PROPERTY = 'ABC'
  }
}

在我的 Jenkins 管道中包含的共享库中,我将 MY_PROPERTY 用作:

def someMethod() {
  def someText = "blah blah ${MY_PROPERTY}"
}

问题是我从许多管道中调用 someMethod() 并且在某些管道中未定义 MY_PROPERTY:

library 'my-shared-library'
pipeline {
  environment {
    
  }
}

所以我收到以下错误:

groovy.lang.MissingPropertyException:没有这样的属性:MY_PROPERTY 用于类:my.comapny.mylib

我需要一种方法来检查是否在 environemnt 部分中声明了 MY_PROPERTY,如下所示:

def someMethod() {
  if is defined MY_PROPERTY then
    def someText = "blah blah ${MY_PROPERTY}"
  else
    def someText = "X"
}

如何检查是否声明了 MY_PROPERTY?如果我尝试访问 MY_PROPERTY 并且它没有在我收到的环境中声明:

groovy.lang.MissingPropertyException:没有这样的属性:MY_PROPERTY 用于类:my.comapny.mylib

【问题讨论】:

    标签: groovy jenkins-pipeline jenkins-groovy


    【解决方案1】:

    您遇到此问题是因为您使用隐式环境变量调用。使用像env.MY_PROPERTY 这样的显式环境变量调用总是更好的选择。这样可以避免No such property 异常,并且当未定义环境变量时,您将获得null 值。这样,您可以进行简单的检查,例如:

    def someMethod() {
      def someText = "blah blah ${env.MY_PROPERTY ?: 'foo'}"
    }
    

    如果未设置 env.MY_PROPERTY,则结果为 blah blah foo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-16
      • 2019-05-20
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多