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

时间:2014-06-20 15:55:55

标签: jenkins

Jenkins ver。 1.532.2

可能与https://issues.jenkins-ci.org/browse/JENKINS-18407

有关

当我去工作并把#34; api"最后我得到以下文字

  

要以编程方式安排新版本,请发布到此URL。如果   build有参数,发布到此URL并提供参数   表格数据。无论哪种方式,成功的排队将导致201   带有位置HTTP标头的状态代码,指向项目的URL   队列。通过轮询队列项的api / xml子URL,您可以   跟踪排队任务的状态。通常,任务将进行   通过一些状态转换,然后最终它变成了   取消(查找"取消"布尔属性),或获取   执行(查找"可执行文件"通常指向的属性   AbstractBuild对象。)

所以我有两个带参数的作业和一个没有参数的作业。当我触发没有参数的作业时,我得到了如上所述的行为,即状态代码为201,其中包含"位置"标题告诉我队列项目。

然而,对于具有参数的作业,似乎不是这种情况。完成后,我得到一个200的状态代码(这意味着它没有排队)但是我可以看到在UI中工作被触发了。有没有人在其他任何地方遇到过同样的问题?

为什么位置标题很重要? "位置"标题是最重要的重要信息。所以Jenkins告诉我OKAY而不告诉我触发的内部版本号(或队列项目编号)是什么。在某些情况下可以工作的一个假设是触发构建并遵循" latestBuild"但它不会在并发构建的环境中工作。

1 个答案:

答案 0 :(得分:0)

我意识到这个问题已经过时但我遇到了同样的问题。我还收到状态代码200.但是如果查看返回的数据(我的数据是json格式),你会发现一个queueItem部分 -

Fiddler capture of response

通过查询本节中给出的附加了api后缀http://myjenkins/queue/item/4/api/xml/的URL,我得到了我想要的信息。首次查询api时,它可能不包含您需要的信息,但通过轮询此URL,一旦构建开始,将有一个可执行部分,其中包含新创建的构建的URL -

XML from polling url

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