在Jenkins的集成管道中,我使用the build step并行触发不同的构建,如下所示:
stage('trigger all builds')
{
parallel
{
stage('componentA')
{
steps
{
script
{
def myjob=build job: 'componentA', propagate: true, wait: true
}
}
}
stage('componentB')
{
steps
{
script
{
def myjob=build job: 'componentB', propagate: true, wait: true
}
}
}
}
}
我想访问build
步骤的返回值,这样我就可以知道在我的Groovy脚本中触发了什么作业名称和编号。
我在示例中发现,返回的对象具有类似getProjectName()
或getNumber()
的getter,我可以使用这些getter。
但是我如何知道返回对象的确切类以及我可以在其上调用的方法的列表呢?这似乎是Pipeline documentation中缺少的。我特别针对这种情况进行询问,但是一般来说,我如何知道返回对象的类以及它的文档?
2条答案
按热度按时间j2cgzkjk1#
步骤文档是基于插件捆绑的一些文件生成的,有时候这还不够。一个简单的方法是通过调用
getClass
打印结果对象的class
:此输出将告诉您结果(在本例中)是
org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper
,其中包含published Javadoc。对于其他情况,我通常不得不深入研究Jenkins源代码。下面是我的一般策略:
DescriptorImpl
,查看返回了什么执行类BuildTriggerStepExecution
并查看start()
方法中的执行体context.onSuccess(value)
来返回结果。在该文件中有一个地方,但那只是在“no-wait”情况下,它总是立即返回,并且是null
(源代码)。onSuccess
,看看还有什么可以从这个插件中触发它。我们发现,如果RunListener
实现已经被配置为异步地为步骤执行设置结果:trigger.context.onSuccess(new RunWrapper(run, false));
是RunWrapper
结果的来源ztyzrc3y2#
下游作业的结果在返回对象的
result
属性中给出。我建议使用
propagate: false
来控制下游作业的结果如何影响当前构建。示例:
只要下游生成不成功,这将设置导致当前生成变为UNSTABLE。
有关其他问题,请参阅Is there a built-in function to print all the current properties and values of an object?和Groovy / grails how to determine a data type?