繁体   English   中英

groovy.lang.MissingPropertyException:没有此类属性:class 的 ERROR_MESSAGE:groovy.lang.Binding

[英]groovy.lang.MissingPropertyException: No such property: ERROR_MESSAGE for class: groovy.lang.Binding

我知道这个问题已经被问过很多次了,但是发生这种情况的原因总是不同的,因此再次询问。

我最近将我的 jenkins 从 2.270 升级到了 2.278 版本。

升级后,当我尝试运行其中一个管道时,出现以下错误并且管道失败。

groovy.lang.MissingPropertyException:没有此类属性:class 的 ERROR_MESSAGE:groovy.lang.Binding

它指向的代码片段看起来像这样。

   def <func2>(body) {

      <some code>
      stages {
          stage('Initialise') {
            steps {
                buildName "${JOB_NAME}#${BUILD_NUMBER}"
                script{
                    if (env.RELEASE == "1.0"){
                        env.ERROR_MESSAGE = "Please provide RELEASE"
                        currentBuild.result = 'FAILURE'
                        return
                    }
                }
            }
           post {
                    unsuccessful {
                        notifySlack(
                            **message: "Deploy Initialise failed: ${ERROR_MESSAGE}",**
                            channel:"${slackDeployChannel}")
                            script{
                                env.DEPLOY = 'no'
                            }
                    }
            }
        }

还有一个地方 env.ERROR_MESSAGE 被调用

def <func1>(arguments) {
  try{
       <SOME CODE>
       return 0
     }
     catch (Exception e) {
       env.ERROR_MESSAGE = e.getMessage()
       return 0
     }
    }

func1 和 func2 都是单独调用的单独函数。 不确定 env.ERROR_MESSAGE 是否正在初始化。

任何线索将不胜感激。

干杯

当 groovy 解析"Deploy Initialise failed: ${ERROR_MESSAGE}"时失败,因为初始化 ENV 变量的 scope 是有限的。

它可能是这样的:

定义一个变量并让它在你想要的任何地方分配和使用。

def errorMessage
def <func2>(body) {

      <some code>
      stages {
          stage('Initialise') {
            steps {
                buildName "${JOB_NAME}#${BUILD_NUMBER}"
                script{
                    if (env.RELEASE == "1.0"){
                        errorMessage = "Please provide RELEASE"
                        currentBuild.result = 'FAILURE'
                        return
                    }
                }
            }
           post {
                    unsuccessful {
                        notifySlack(
                            **message: "Deploy Initialise failed: ${errorMessage}",**
                            channel:"${slackDeployChannel}")
                            script{
                                env.DEPLOY = 'no'
                            }
                    }
            }
        }
    
def <func1>(arguments) {
  try{
       <SOME CODE>
       return 0
     }
     catch (Exception e) {
       errorMessage = e.getMessage()
       return 0
     }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM