echo Freestyle Job

时间:2017-03-21 13:11:06

标签: jenkins groovy

我想将管道作业中的一些数据打印到我的自由式作业日志中。因此,在我的管道工作中,我调用了这个工作并提供了一些参数:

mailBody = buf.toString()

build job: 'sendEmail', parameters:
                            [
                                string(name: 'jobName', value:env.JOB_NAME),
                                string(name: 'buildNumber', value: env.BUILD_NUMBER),
                                string(name: 'mailBody', value: mailBody)
                            ]

在我的自由式作业中sendEmail我有两种选择。一方面,我可以拨打system groovy script

enter image description here

或另一方面是windows batch脚本:

enter image description here

但这两种可能性都无效。批量调用无法识别变量并打印env.JOB_NAME而不是此变量的值。

groovy脚本会导致以下错误:

    groovy.lang.MissingMethodException: No signature of method: Script1.echo() is applicable for argument types: (java.lang.String) values: [test]
Possible solutions: each(groovy.lang.Closure), getAt(java.lang.String), wait(), run(), run(), find()
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:81)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
    at Script1.run(Script1.groovy:1)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:663)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:650)
    at hudson.plugins.groovy.SystemGroovy.run(SystemGroovy.java:118)
    at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:74)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
    at hudson.model.Build$BuildExecution.build(Build.java:205)
    at hudson.model.Build$BuildExecution.doRun(Build.java:162)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:534)
    at hudson.model.Run.execute(Run.java:1728)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:404)

编辑:将echo更改为println后,我可以在自由式作业构建中显示值。但是在给出我的参数时似乎有些不对劲。命令println $CHANGE_AUTHOR_EMAILprintln $jobNameprintln $buildNumberprintln $mailBody导致以下错误:

groovy.lang.MissingPropertyException: No such property: $jobName for class: Script1

2 个答案:

答案 0 :(得分:1)

您希望使用printprintln语句代替echo

有关详细信息,请参阅Groovy Plugin

编辑:根据OP对原始问题的解决方案后对新问题的评论。

要获取作业名称,您需要编写脚本。有关更多详细信息,请参阅现有解决方案here

答案 1 :(得分:0)

解决了这个问题。我调用了这个作业并给它提供了字符串参数,但我忘了参数化被调用的作业。参数化和定义参数名称后,我可以在第二份工作中访问它们。