@Grab(group='com.cdancy', module='jenkins-rest', version='0.0.11') import com.cdancy.jenkins.rest.JenkinsClient import com.cdancy.jenkins.rest.domain.common.Error import com.cdancy.jenkins.rest.domain.common.IntegerResponse import com.cdancy.jenkins.rest.domain.common.RequestStatus import com.cdancy.jenkins.rest.domain.job.BuildInfo import com.cdancy.jenkins.rest.domain.queue.QueueItem void dealWithErrors(String msg, List errors) { if (errors.size() > 0) { for (Error error : errors) { System.err.println("Exception: " + error.exceptionName()) } throw new RuntimeException(msg) } } String config = new File("job.xml").text // Create a client instance JenkinsClient client = JenkinsClient.builder().build() // Create a job RequestStatus status = client.api().jobsApi().create(null, "myJob", config) dealWithErrors("Unable to create job", status.errors()) println("Job successfuly created") // Submit a build IntegerResponse queueId = client.api().jobsApi().build(null, "myJob") dealWithErrors("Unable to submit build", queueId.errors()) println("Build successfuly submitted with queue id: " + queueId.value()) // Poll the Queue, check for the queue item status QueueItem queueItem = client.api().queueApi().queueItem(queueId.value()) while (true) { if (queueItem.cancelled()) { throw new RuntimeException("Queue item cancelled") } if (queueItem.executable()) { println("Build is executing with build number: " + queueItem.executable().number()) break } Thread.sleep(10000) queueItem = client.api().queueApi().queueItem(queueId.value()) } // Get the build info of the queue item being built and poll until it is done BuildInfo buildInfo = client.api().jobsApi().buildInfo(null, "myJob", queueItem.executable().number()) while (buildInfo.result() == null) { Thread.sleep(10000) buildInfo = client.api().jobsApi().buildInfo(null, "myJob", queueItem.executable().number()) } println("Build status: " + buildInfo.result()) // Clean up status = client.api().jobsApi().delete(null, "myJob")