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

Sri*_*vas 9 groovy jenkins jenkins-pipeline

我的詹金斯文件如下所示:

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

node {
  stage('Build') { 

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

def boolean checkDeployStatus() {
  echo "${manifestFile}"
  return true
}
Run Code Online (Sandbox Code Playgroud)

我得到的例外如下:

groovy.lang.MissingPropertyException: No such property: manifestFile for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
Run Code Online (Sandbox Code Playgroud)

如何访问节点外的变量?

Rob*_*les 13

Groovy 在脚本级别具有不同类型的范围。我永远无法把这一切都放在我的脑海里。无需尝试解释其所有原因(并且可能没有做到公正),我可以告诉您(如您所见),该manifestFile变量不在该函数的范围内。只是不要声明manifestFile(即不要放在def它前面)。这将使它成为一个“全局”(不是真的,但为了您的目的)变量,然后它应该可以在方法调用中访问。


小智 7

尝试这个

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

node {
  stage('Build') { 

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

def boolean checkDeployStatus() {
  echo "${manifestFile}"
  return true
}
Run Code Online (Sandbox Code Playgroud)