如何在Jenkins文件Groovy函数中访问阶段外的变量?

如何在Jenkins文件Groovy函数中访问阶段外的变量?,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,我的jenkins文件如下所示: import groovy.json.* def manifestFile = "C:\\manifest.yml" node { stage('Build') { } stage('Deploy') { checkDeployStatus() } } def boolean checkDeployStatus() { echo "${manifestFile}" return true } 我得到的例外情况如下:

我的jenkins文件如下所示:

import groovy.json.*
def manifestFile = "C:\\manifest.yml"

node {
  stage('Build') { 

  }
  stage('Deploy') { 
    checkDeployStatus()
  } 
}

def boolean checkDeployStatus() {
  echo "${manifestFile}"
  return true
}
我得到的例外情况如下:

groovy.lang.MissingPropertyException: No such property: manifestFile for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)

如何访问节点外部的变量?

Groovy在脚本级别有一种不同的作用域。我无法在脑海中把一切都整理好。不必解释它的所有原因(可能没有做到公正),我可以告诉您(如您所见),
manifestFile
变量不在该函数的作用域内。只是不要声明
manifestFile
(即不要将
def
放在它前面)。这将使它成为一个“全局”(不是真正的,但出于您的目的)变量,那么它应该可以在方法调用中访问

试试这个

import groovy.json.*
manifestFile = "C:\\manifest.yml"

node {
  stage('Build') { 

  }
  stage('Deploy') { 
    checkDeployStatus()
  } 
}

def boolean checkDeployStatus() {
  echo "${manifestFile}"
  return true
}