Quelque chose ne va pas avec l'interpréteur groovy dans ce Jenkins. J'essaie d'écrire une bibliothèque et j'ai la même erreur.
J'ai fait un exemple de pipeline script. J'ai écrit différentes classes pour éviter les erreurs induites :
class Test1 {
private t1
private wfs
Test1(Test2 t2, wfs) {
this.wfs = wfs
wfs.echo 'TEST1 constructor'
this.t1 = t2.getT2() }
def getT1() {
wfs.echo 'getT1() function'
def result = t1.toString()
return result }
}
class Test2 {
private t2
private wfs
Test2(wfs) {
this.wfs = wfs
wfs.echo 'TEST2 constructor'
this.t2 = "hello" }
def getT2() {
wfs.echo 'getT2() function'
def result = t2.toString()
return result }
}
echo 'Creating Test2 object'
Test2 test2 = new Test2(this)
echo "Test2 object was created successfully. test2.t2="+test2.getT2()
echo 'Creating Test1 object'
Test1 test1 = new Test1(test2,this)
echo "Test1 object was created successfully. test1.t1="+test1.getT1()
La sortie sur ce script est :
Started by user admin
[Pipeline] echo
Creating Test2 object
[Pipeline] echo
TEST2 constructor
[Pipeline] echo
getT2() function
[Pipeline] echo
Test2 object was created successfully. test2.t2=hello
[Pipeline] echo
Creating Test1 object
[Pipeline] echo
TEST1 constructor
[Pipeline] End of Pipeline
com.cloudbees.groovy.cps.impl.CpsCallableInvocation
Finished: FAILURE
Le problème se trouve dans cette chaîne this.t1 = t2.getT2()
. Il s'avère que t2.getT2()
La fonction ne peut pas être réalisée dans le constructeur :(
Et le deuxième - si vous essayez de retourner comme ça :
def getT1() {
wfs.echo 'getT1()'
return t1.toString()
}
Il échouera...