如何在不等待Jenkins下游任务完成的情况下检索该任务的URL?我可以在Jenkins Web界面中访问下游任务,但无法立即在上游管道中检索URL。
my_job = null my_job = build job: 'Downstream Job', wait: false, propagate: false my_job_url = my_job.getAbsoluteUrl() // my_job is still null
这是不可能的吗?
uxh89sit1#
当您将构建步骤与wait一起使用时:false,则返回一个Queue.Item对象,表示生成队列中的项。由于下游作业尚未启动,因此此时没有URL可供其提供。因此,使用wait:生成步骤为false。一种可能的解决方法是使用Jenkins REST API检索下游作业的URL。您可以使用Jenkins.getJob()方法获取下游作业的示例,然后在该示例上调用getAbsoluteUrl()来检索其URL。以下示例说明了如何使用Jenkins REST API检索下游作业的URL:
import jenkins.model.* import hudson.model.* def jobName = 'Downstream Job' def jenkins = Jenkins.getInstance() def job = jenkins.getItemByFullName(jobName, Job.class) def jobUrl = job.getAbsoluteUrl() println "Downstream job URL: ${jobUrl}"
此代码将检索下游作业的示例并将其URL打印到控制台。您可以修改它以满足您的需要,并将其集成到上游管道脚本中。
uujelgoq2#
考虑到@roman在评论中所说的,JENKINS-31392是最好的解决方案。
np8igboo3#
Pipeline: Build Step plugin的新版本具有以下变更:
将新选项waitForStart添加到生成步骤。waitForStart选项将生成步骤的行为更改为阻塞,直到启动下游生成并且可以返回有效的RunWrapper。另请参见JENKINS-60849这使得有可能获得下游构建(和链接),只要它的构建开始。
3条答案
按热度按时间uxh89sit1#
当您将构建步骤与wait一起使用时:false,则返回一个Queue.Item对象,表示生成队列中的项。由于下游作业尚未启动,因此此时没有URL可供其提供。因此,使用wait:生成步骤为false。
一种可能的解决方法是使用Jenkins REST API检索下游作业的URL。您可以使用Jenkins.getJob()方法获取下游作业的示例,然后在该示例上调用getAbsoluteUrl()来检索其URL。
以下示例说明了如何使用Jenkins REST API检索下游作业的URL:
此代码将检索下游作业的示例并将其URL打印到控制台。您可以修改它以满足您的需要,并将其集成到上游管道脚本中。
uujelgoq2#
考虑到@roman在评论中所说的,JENKINS-31392是最好的解决方案。
np8igboo3#
Pipeline: Build Step plugin的新版本具有以下变更:
将新选项waitForStart添加到生成步骤。waitForStart选项将生成步骤的行为更改为阻塞,直到启动下游生成并且可以返回有效的RunWrapper。
另请参见JENKINS-60849
这使得有可能获得下游构建(和链接),只要它的构建开始。