【发布时间】:2019-01-11 05:50:04
【问题描述】:
我有一个 Jenkins Pipeline JOB,我在其中声明了一些阶段,这些阶段使用了我自己在同一个 groovy 脚本中创建的外部函数。
errorList = ["badGatewayMsg", "closedByRemoteHostMsg", "connectionTimedOut"]
def boolean someFunction(name) {
String jobLog = jenkins.model.Jenkins.instance.getItemByFullName(name).lastBuild.log
for (error in errorList) {
if (jobLog.contains(error))
return true
}
return false
}
stage('stage1') {
if(someFunction('job1Name'))
// do Something
}
stage('stage2') {
if(someFunction('job2Name'))
// do Something
}
当我想开始这个管道构建时,我收到以下错误:
java.lang.NoSuchMethodError: No such DSL method 'someFunction' found among steps ....
感谢您的帮助!
【问题讨论】:
-
代码是否被编辑或者它真的报告了一个从未在你的代码中使用或声明过的方法?此外,异常的完整堆栈跟踪也会有所帮助。
-
该方法在我的所有阶段都真正使用过,我只是不知道在哪里可以声明它在我所有的 groovy 脚本中可见
-
@marherbi 我认为您不理解他的问题。您正在调用未在所示代码中声明或定义的方法。他在问你是否没有显示代码或者它不存在,在这种情况下,这就是问题所在。
-
您似乎使用的方法是
someFunction,但异常抱怨isOnError似乎不是基于因果搜索的内部标识符。 -
啊!!!你说得对,我只是改了方法名,不好意思!!
标签: jenkins groovy jenkins-pipeline nosuchmethod