一尘不染

如何动态触发jenkins的下游构建?

jenkins

我们想动态地触发詹金斯中不同下游版本中的集成测试。我们有一个参数化的集成测试项目,该项目将测试名称作为参数。我们从git repo动态确定测试名称。

我们有一个父项目,该项目使用jenkins-cli为源代码中发现的每个测试启动集成项目的构建。父项目和集成项目通过匹配的指纹相关联。

这种方法的问题是汇总测试结果不起作用。我认为问题在于“下游”集成测试是通过jenkins-cli启动的,因此jenkins并未意识到它们是在下游。

我看过许多jenkins插件来尝试使它工作。Join和Parameterized
Trigger插件无济于事,因为它们希望生成静态的项目列表。可用于参数化触发器的参数工厂也不起作用,因为没有工厂可以创建任意参数列表。日志触发器插件将无法使用。

Groovy Postbuild插件看起来应该可以工作,但是我不知道如何从中触发构建。


阅读 388

收藏
2020-07-25

共1个答案

一尘不染

def job = hudson.model.Hudson.instance.getJob("job")
def params = new StringParameterValue('PARAMTEST', "somestring")  
def paramsAction = new ParametersAction(params) 
def cause = new hudson.model.Cause.UpstreamCause(currentBuild)
def causeAction = new hudson.model.CauseAction(cause) 
hudson.model.Hudson.instance.queue.schedule(job, 0, causeAction, paramsAction)

这终于对我有用。

2020-07-25