我正在尝试开发共享库并具有以下目录结构
- src/com/mycomapny
- MyTest.groovy
- 变量
- test.groovy
- 詹金斯文件
我的Jenkinsfile仅调用 test.groovy 中可用的方法并提供所需的输入。它导入 MyTest 并创建对象并调用构造函数,然后是执行MyTest.groovy文件中可用功能的实际方法
这里从未从全局 vars/test.groovy 调用构造函数类
我尝试从 groovy 调用类和方法,它工作正常,但是当我从 jenkinsfile 调用它时它不工作。我不知道为什么我不能调用构造函数以及我缺少什么。
我已将@NonCPS放在上面的 test.groovy 方法上,但它仍然无法正常工作。
//MyTest.groovy
package com.mycompany
class MyTest implements Serializable {
public _notification
MyTest(Closure content) {
notification = [:]
content.resolveStrategy = Closure.DELEGATE_FIRST
content.delegate = notification
content()
println("Entered Constructor")
this._notification = notification
}
}
//test.groovy
import com.mycopany.MyTest
def notify(Closure content) {
println("This is line i am getting in the output but nothing after that")
MyTest tester = new MyTest(content)
println(tester._notification.colorcode)
}
//Jenkinsfile
@library("MysharedLibrary@master") _
pipeline{
stages {
stage {
steps {
test.notify {
buildno = 12
jobname = "Mytest"
colorcode = "Blue"
}
}
}
}
}
在这里,我只想从 jenkins 文件中调用构造函数并在我的 vars/test.groovy 中打印输入值的值。
EDIT1:当我在方法“def nofity”上方使用@NonCPS 时,我的构建正在成功,但除了通知方法的第一行中的打印语句外,我什么也没得到。
如果我不使用@NonCPS,我会得到以下异常
Error when executing always post condition:
com.cloudbees.groovy.cps.impl.CpsCallableInvocation
hudson.remoting.ProxyException:com.cloudbees.groovy.cps.impl.CpsCallableInvocation
Finished: FAILURE