Jenkins无需等待即可获取下游作业的URL

68bkxrlz  于 2023-03-17  发布在  Jenkins
关注(0)|答案(3)|浏览(247)

如何在不等待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

这是不可能的吗?

uxh89sit

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打印到控制台。您可以修改它以满足您的需要,并将其集成到上游管道脚本中。

uujelgoq

uujelgoq2#

考虑到@roman在评论中所说的,JENKINS-31392是最好的解决方案。

np8igboo

np8igboo3#

Pipeline: Build Step plugin的新版本具有以下变更:

  • 实现选项以仅等待下游生成启动

将新选项waitForStart添加到生成步骤。waitForStart选项将生成步骤的行为更改为阻塞,直到启动下游生成并且可以返回有效的RunWrapper。
另请参见JENKINS-60849
这使得有可能获得下游构建(和链接),只要它的构建开始。

相关问题