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

时间:2017-10-30 02:22:13

标签: 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
}

我得到的例外情况如下:

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

如何访问节点外的变量?

2 个答案:

答案 0 :(得分:4)

Groovy在脚本级别有不同的范围。我无法将它全部整理在脑海中。我没有尝试解释它的所有原因(并且可能没有做到公道),我可以告诉你(正如你所看到的),manifestFile变量不在该函数的范围内。只是不要声明manifestFile(即不要将def放在它前面)。这将使它成为一个全球性的" (不是真的,但为了你的目的)变量,那么它应该在方法调用中可访问。

答案 1 :(得分:2)

试试这个

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

node {
  stage('Build') { 

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

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