Я пытаюсь разработать общие библиотеки и имеет следующую структуру каталогов
- src / com / mycomapny
- vars
- Jenkinsfile
my Jenkinsfile вызывает только метод, доступный в test.groovy с обязательным вводом.который импортирует MyTest и создает объект и вызывает конструктор, а затем фактический метод, который выполняет функциональные возможности, доступные в MyTest.groovy файле
Здесь класс конструктора никогда не вызывался из глобальных переменных / тестов.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: когда я использую @NonCPS выше метода"def nofity" моя сборка проходит успешно, но я не получаю ничего, кроме оператора print в первой строке метода notify.
Если я не использую @NonCPS, я получаю следующее исключение
Error when executing always post condition:
com.cloudbees.groovy.cps.impl.CpsCallableInvocation
hudson.remoting.ProxyException:com.cloudbees.groovy.cps.impl.CpsCallableInvocation
Finished: FAILURE