Bakir Jusufbegovic
Bakir Jusufbegovic

Reputation: 2966

Running Groovy command from Jenkins using Groovy script plugin

I want to force following scenario in Jenkins:

  1. I have job A and job B
  2. I want to disable job A when job B is executed, and after execution of job B, I want to enable job A again.

To enable/disable job A, I've used Groovy plugin: Groovy plugin

Groovy plugin offers two possibilities: Execute Groovy script and Execute system Groovy script.

I've added following code snippets on the start of execution of job B:

Jenkins.instance.getItem("job_A").disable()

and after execution of job B:

Jenkins.instance.getItem("job_A").enable()

Using Execute Groovy script:

When I ran job B, it fails with following exception:

Caught: groovy.lang.MissingPropertyException: No such property: Jenkins for class: hudson7198966217090520732
    at hudson7198966217090520732.run(hudson7198966217090520732.groovy:1)

Using Execute system Groovy script:

When I ran job B, it fails with following exception:

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)

Any idea what might be the problem? Also, when running this code snippets from Jenkins Script Console, it works without any issues. Thanks in advance.

Upvotes: 15

Views: 40898

Answers (4)

Ashwaq
Ashwaq

Reputation: 459

For me the above given solutions were not working, but I tried in the following way and it works fine :)

import jenkins.*
import jenkins.model.*
Jenkins.instance.getItemByFullName('folder/Sub_Folder/jobName').setDisabled(false)

Upvotes: 0

Max Spring
Max Spring

Reputation: 1140

I ran into the same problem "unable to resolve class jenkins.model.Jenkins" as commented by @iloveretards, until I realized I had tried to use the build step "Execute Groovy script". After switching to build step "Execute system Groovy script", this actually worked as intended:

import jenkins.model.Jenkins
Jenkins.instance.getItem("job-name").disable()

Upvotes: 6

agentgonzo
agentgonzo

Reputation: 3633

For future readers, Tim's comment above is the solution:

import jenkins.model.Jenkins

Upvotes: 39

Vijay
Vijay

Reputation: 384

I think if you run the System Groovy Script, Jenkins objects are available by default. What you are running is the groovy script. Hence, need to import the packages/classes.

Upvotes: 3

Related Questions