我有一个形式的多工作结构:
职吧 JOBB JobC
我希望它的部分运行JobB将在JobA中设置参数,所以在JobB完成后,JobA将能够将它传递给JobC。
我试图查看multijob插件本身,但没有找到任何办法。 也尝试使用或不使用groovy搜索关于主题的各种搜索,但没有找到任何有用的信息。
答案 0 :(得分:4)
我通过使用groovy脚本解决了这个问题:
def my_run = Thread.currentThread().executable
def my_parent_run = my_run.getCause(hudson.model.Cause.UpstreamCause).getUpstreamRun()
def preExistingAction = my_parent_run .getAction(hudson.model.ParametersAction.class)
my_parent_run.getActions().remove(preExistingAction)
def params = preExistingAction ?. iterator() ?. toList() ?: []
params << new hudson.model.StringParameterValue('TEST_PARAM', 'FOO')
my_parent_run.addAction(new hudson.model.ParametersAction(params))
使用脚本(“Execute System Groovy Scripts”构建步骤)将脚本作为“系统”非常重要,这样脚本就可以在Jenkins JVM的上下文中运行,并且能够导入Build对象。 / p>
所以JobB运行这个脚本,然后当它完成这个构建步骤时,JobA现在有一个名为“TEST_PARAM”的参数,其值为“FOO”,它可以通过任何标准方式轻松传递给JobC。
请注意,我使用的是完全限定名称,但您可以import hudson.model.*
删除脚本中的所有hudson.modle.
。
我的目标是编写和发布一个可以做到这一点的插件,因为我认为在许多情况下它是一个有用的功能。
答案 1 :(得分:1)
我不知道如何使用您当前的工作结构,但是如果您更改工作以便JobB
触发JobC
,那么您可以使用{{实现您想要的目标3}}。使用此功能,您可以按如下方式配置作业:
<强>职吧强>
在构建后操作中,设置为{em>触发参数化构建 JobB
。在添加参数下,选择预定义参数,然后输入要传递的参数。
<强> JOBB 强>
在构建后操作中,设置为{em>触发参数化构建 JobC
。然后,您可以通过多种方式传递参数(请注意,您可以将这些不同的方法组合在一起传递参数)。
JobA
已定义的参数,请在添加参数下选择当前构建参数。JobB
以编程方式确定要传递给JobC
的参数,让JobB
将其输出到属性文件,然后通过选择将这些参数传递给JobC
添加参数下的属性文件中的参数,并输入存储它们的文件。