通过Jenkins作业从脚本中调用类的方法时,无法解析类

时间:2019-06-18 13:16:11

标签: jenkins groovy jenkins-groovy

我有一个詹金斯(Jenkins)工作,作为构建动作的一部分,我正在执行一个普通的脚本,例如脚本 A 。我正在尝试从脚本A 中执行 Test1 的方法。文件 A.groovy Test1.groovy 都位于同一目录中。 每当我运行作业时,我都会遇到"unable to resolve class"错误。

A.groovy

println "****************** TEST : START  *******************************"

println " Environment Variable value is : "
new Test1().printEnv()

println "****************** TEST : END  *******************************"

我正在使用Groovy 2.3.6。

Test1.groovy

class Test1{

def printEnv(){

println "****************** TEST inside Test1.groovy : START  *******************************"

println "****************** TEST inside Test1.groovy : END  *******************************"
} 

}

错误:

unable to resolve class Test1 

注意::当我从外部jenkins执行脚本时,此方法有效。只有当我尝试通过Jenkins执行它时,它才找不到类Test1。

我对此行为非常困惑。 那里有很多文章讨论如何解决"unable to resolve class Test1"错误。但是似乎没有一个适用于我的情况,因为从詹金斯家族以外的人打来的电话就可以了。

我相信我已经提供了所有可能的信息。不过,如有需要,请随时询问更多信息。

1 个答案:

答案 0 :(得分:0)

如果您使用的是Jenkins管道,则需要加载辅助Groovy文件。您可以找到有关如何将groovy源文件用于管道here的文档。

对于您而言,您可以执行以下操作:

A.groovy

def test1 = load 'Test1.groovy'
test1.printEnv()

Test1.groovy

class Test1 {
  def printEnv() {
    // TODO
  }
}
return new Test1()

请注意文档中解释的Test1.groovy中的return

希望有帮助