Je veux forcer le scénario suivant à Jenkins:
Pour activer/désactiver le travail A, j'ai utilisé Groovy plugin: Groovy plugin
Groovy plugin offre deux possibilités: Exécuter un script Groovy et Exécuter un script Groovy système .
J'ai ajouté les extraits de code suivants au début de l'exécution du travail B:
Jenkins.instance.getItem("job_A").disable()
et après exécution du travail B:
Jenkins.instance.getItem("job_A").enable()
Lorsque j'ai exécuté le travail B, il a échoué avec l'exception suivante:
Caught: groovy.lang.MissingPropertyException: No such property: Jenkins for class: hudson7198966217090520732
at hudson7198966217090520732.run(hudson7198966217090520732.groovy:1)
Lorsque j'ai exécuté le travail B, il a échoué avec l'exception suivante:
FATAL: No such property: Jenkins for class: Script1
groovy.lang.MissingPropertyException: No such property: Jenkins for class: Script1
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.Java:50)
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.Java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.Java:231)
at Script1.run(Script1.groovy:1)
at groovy.lang.GroovyShell.evaluate(GroovyShell.Java:682)
at groovy.lang.GroovyShell.evaluate(GroovyShell.Java:666)
at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.Java:80)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.Java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.Java:804)
at hudson.model.Build$BuildExecution.build(Build.Java:199)
at hudson.model.Build$BuildExecution.doRun(Build.Java:160)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:586)
at hudson.model.Run.execute(Run.Java:1576)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:46)
at hudson.model.ResourceController.execute(ResourceController.Java:88)
at hudson.model.Executor.run(Executor.Java:241)
De plus, lors de l’exécution de ces extraits de code à partir de Jenkins Script Console, cela fonctionne sans aucun problème. Merci d’avance.
Pour les futurs lecteurs, le commentaire de Tim ci-dessus est la solution:
import jenkins.model.Jenkins
Je pense que si vous exécutez le script System Groovy, les objets Jenkins sont disponibles par défaut. Ce que vous exécutez est le script groovy. Par conséquent, il est nécessaire d'importer les packages/classes.
J'ai rencontré le même problème "incapable de résoudre la classe jenkins.model.Jenkins" commenté par @iloveretards, jusqu'à ce que je réalise que j'avais essayé d'utiliser l'étape de construction "Exécuter le script Groovy". Après le passage à l'étape de construction "Exécuter le script Groovy du système", cela a fonctionné comme prévu:
import jenkins.model.Jenkins
Jenkins.instance.getItem("job-name").disable()