Jenkins使用API触发构建将返回状态代码200

Jenkins使用API触发构建将返回状态代码200,jenkins,Jenkins,詹金斯。1.532.2 可能与 当我开始工作并在末尾加上“api”时,我得到了以下文本 若要以编程方式计划新生成,请发布到此URL。如果 build具有参数,发布到此URL,并按如下方式提供参数 表单数据。无论哪种方式,成功排队都将导致201 状态代码,位置HTTP标头指向中项目的URL 排队。通过轮询队列项目的api/xml子URL,您可以 跟踪排队任务的状态。一般来说,这项任务会完成 通过一些状态转换,然后最终变成 已取消(查找“已取消”布尔属性),或获取 已执行(查找通常指向 抽象构建对象

詹金斯。1.532.2

可能与

当我开始工作并在末尾加上“api”时,我得到了以下文本

若要以编程方式计划新生成,请发布到此URL。如果 build具有参数,发布到此URL,并按如下方式提供参数 表单数据。无论哪种方式,成功排队都将导致201 状态代码,位置HTTP标头指向中项目的URL 排队。通过轮询队列项目的api/xml子URL,您可以 跟踪排队任务的状态。一般来说,这项任务会完成 通过一些状态转换,然后最终变成 已取消(查找“已取消”布尔属性),或获取 已执行(查找通常指向 抽象构建对象。)

我有两份工作,一份有参数,一份没有参数。当我触发一个没有参数的作业时,我会得到如上所述的行为,即状态代码201,带有一个“Location”头,告诉我队列项目

但是,对于具有参数的作业,情况似乎并非如此。当这完成后,我得到一个状态码200(这有点意味着它没有排队),但我可以看到,在UI中的作业被触发罚款。有没有人在其他地方遇到过同样的问题

为什么位置标题很重要?
“位置”标题是最重要的信息。所以Jenkins告诉我OK,但没有告诉我触发的构建号(或队列项目号)。在某些情况下可以工作的一个假设是触发一个构建并遵循“最新的构建”,但它在并发构建的环境中不起作用。

我意识到这个问题很老,但我也遇到了同样的问题。我还收到状态代码200。但是,如果查看返回的数据(我的数据是json格式的),您将发现一个queueItem部分-

通过查询附加有api后缀
http://myjenkins/queue/item/4/api/xml/
我得到了我想要的信息。当第一次查询api时,它可能不包含您需要的信息,但通过轮询此url,一旦启动构建,将有一个包含新创建的构建的url的可执行部分-


值得指出的是,队列url似乎有一个有限的生命周期,在此之后它将不可用(如果不再在队列中)-我不确定这是多长时间,或者它是否可配置,但对我来说似乎大约是5分钟。希望这有帮助。

HTTP 200表示“OK”。也许这是意料之中的?我的问题不是关于200/201状态代码。它们都表示OK/排队。我的问题是,在状态为200/build且带有参数的情况下,“Location”标题未填充,我更新了问题,说明了为什么“Location”是最重要的标题。