Ho creato uno script Groovy che viene utilizzato in un passaggio System Groovy Script
in un lavoro Jenkins che deve accedere alla generazione corrente del lavoro corrente.Accesso al build corrente di Jenkins nello script Groovy
La build corrente è necessaria quando si utilizza un Hudson.model Cause.UpstreamCause
per collegare la build corrente del lavoro corrente a un lavoro dipendente che sto pianificando.
Poiché il codice è più conciso:
my-job-step.groovy
:
def scheduleDependentJob(jobName) {
def fooParam = new StringParameterValue('foo', 'bar');
def paramsAction = new ParametersAction(fooParam)
println "Scheduling dependent job"
def currentJob = ???
def cause = new Cause.UpstreamCause(currentBuild)
def causeAction = new hudson.model.CauseAction(cause)
instance.queue.schedule(job, 0, causeAction, paramsAction)
}
Il CauseAction
costruttore (Visto su http://javadoc.jenkins-ci.org/hudson/model/Cause.UpstreamCause.html) richiede un oggetto Run
che l'animazione oggetto corrente deve essere un'istanza di. Non riesco proprio a trovare un buon modo per ottenere la build corrente del lavoro in esecuzione all'interno di uno script Groovy.
ho trovato YMMV un po 'a seconda di ciò chiama lo script Groovy (per esempio email-ext-plug-in, azioni post-compilazione). Con i lavori in esecuzione 'activeBuild = Thread.currentThread(). Executable' funziona. Con vecchi lavori che non funzionano. L'utilizzo della build var predefinita è probabilmente la migliore se è lì. Per ottenere l'oggetto di build in entrambi i casi puoi fare qualcosa del tipo 'try {c = build.getClass()} catch (Exception ex) {try {build = Thread.currentThread(). Executable} catch (Exception ex2) {println ("oh caro, nessun oggetto di costruzione.")}} '. – gaoithe