У меня есть два задания Jenkins, одно из которых называется "UpStreamJob" , а другое - его нижестоящее задание, называемое "GetUpstreamJob" .
. Восходящее задание настроено на начало работы вниз по течению как ее действие после постройки. Нижестоящее задание настраивается с параметром «execute groovy script» , который указывает на сценарий groovy, основная цель которого - получить имя задания верхнего уровня, которое его вызвало, и затем записать имя задания в файл свойств. (что мне еще предстоит реализовать).
Groovy скрипт:
@GrabResolver(name='jenkins', root='http://repo.jenkins-ci.org/public/')
@Grapes([
@Grab(group='org.jenkins-ci.main', module='jenkins-core', version='2.167')
])
import hudson.model.*
def writeToPropertyFile(){
def causes = Run.getCauses()
for (cause in causes)
{
printCausesRecursively(cause)
}
}
def printCausesRecursively(cause) {
if (cause.class.toString().contains("UpstreamCause")) {
println "This job was caused by " + cause.toString()
for (upCause in cause.upstreamCauses) {
printCausesRecursively(upCause)
}
} else {
println "Root cause : " + cause.toString()
}
}
writeToPropertyFile()
Ошибка в журнале консоли Jenkins:
Started by upstream project "UpStreamJob" build number 11
originally caused by:
Started by user xyz
Running as SYSTEM
[EnvInject] - Loading node environment variables.
Building remotely on Server123 in workspace D:\Jenkins\workspace\GetUpstreamJob
[GetUpstreamJob] $ D:\Jenkins\tools\hudson.plugins.groovy.GroovyInstallation\Groovy-2-5-7\bin\groovy.bat D:\Asif\getUpstreamJob.groovy
Caught: java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException
java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException
at hudson.util.XStream2.getDefaultDriver(XStream2.java:109)
at hudson.util.XStream2.<init>(XStream2.java:113)
at hudson.model.Run.<clinit>(Run.java:2471)
at getUpstreamJob.writeToPropertyFile(getUpstreamJob.groovy:10)
at getUpstreamJob.run(getUpstreamJob.groovy:32)
Caused by: java.lang.ClassNotFoundException: org.xmlpull.v1.XmlPullParserException
... 5 more
Build step 'Execute Groovy script' marked build as failure
Notifying upstream projects of job completion
Finished: FAILURE
РЕДАКТИРОВАТЬ 1 : START
Ниже приведена ошибка, отображаемая в журнале консоли Jenkins, когда я пытаюсь запустить сценарий, скопировав код сценария в «Выполнить сценарий Groovy сценарий» :
Started by upstream project "UpStreamJob" build number 15
originally caused by:
Started by user Malick, Asif
Running as SYSTEM
[EnvInject] - Loading node environment variables.
Building remotely on SERVERNAMEXYZ123 in workspace D:\Jenkins\workspace\GetUpstreamJob
ERROR: Build step failed with exception
groovy.lang.MissingMethodException: No signature of method: java.lang.Class.getCauses() is applicable for argument types: () values: []
Possible solutions: getClasses(), getClass(), getName(), metaClass(groovy.lang.Closure), metaClass(groovy.lang.Closure), getFields()
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:153)
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:158)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:162)
at org.kohsuke.groovy.sandbox.impl.Checker$checkedCall.callStatic(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
at Script1.writeToPropertyFile(Script1.groovy:10)
at Script1$writeToPropertyFile.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:160)
at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:157)
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:158)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:162)
at org.kohsuke.groovy.sandbox.impl.Checker$checkedCall.callStatic(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
at Script1.run(Script1.groovy:32)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runScript(GroovySandbox.java:162)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate(SecureGroovyScript.java:368)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate(SecureGroovyScript.java:312)
at hudson.plugins.groovy.SystemGroovy.run(SystemGroovy.java:95)
at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:59)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:741)
at hudson.model.Build$BuildExecution.build(Build.java:206)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1853)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:427)
Build step 'Execute system Groovy script' marked build as failure
Notifying upstream projects of job completion
Finished: FAILURE
РЕДАКТИРОВАТЬ 2: КОНЕЦ
Пожалуйста, дайте мне знать, если я пропустил какие-либо детали. Часть лога c взята из inte rnet.