如何为远程API在Jenkins中触发的构建获取正确的构建号

时间:2018-08-01 17:13:51

标签: python api jenkins

我正在使用http://jenkins:8080/view/projectAlpha/job/deploy_job_with_params/build的Python请求在Jenkins中触发带有参数的构建,但是我没有任何队列或构建编号来标识我的构建。

根据上述网址的Jenkins的/ api页面:

  

“要以编程方式安排新的构建,请发布到此URL(表示/ build URL-RaamEEIL)。如果   build具有参数,发布到此URL(表示/ buildWithParameters url-RaamEEIL),并提供以下参数:   表格数据。无论哪种方式,成功排队都会导致201   带有位置HTTP标头的状态代码,该标头指向   队列。”

但是,我没有获得队列http://jenkins:8080/queue/item/21038/api/json的URL,而是获得了在部署该配置时返回的位置标头中的队列的URL(例如http://jenkins:8080/view/projectAlpha/job/deploy_job_with_params/),因此基本上我没有任何队列号或内部编号

我阅读了一个解决方法的建议,以发送带有一些ID的附加参数,该参数可用于验证最新的版本是我的版本,或用于搜索整个版本列表,直到找到正确的版本。

谢谢。

1 个答案:

答案 0 :(得分:0)

嗯,事实证明我把事情搞混了。这似乎发生在许多其他人身上,所以这里有一些信息。

/ build url-返回 location =作业的URL。在您的版本中不包含信息

/ buildWithParameters网址-返回 location =您的生成队列项的网址

根据丹尼尔·贝克(Daniel Beck)对https://issues.jenkins-ci.org/browse/JENKINS-30317-

的评论

(通过“此”,作者是指/ build网址)

  

就是这个问题。这实际上不是API。就像我以前写的   所记录的API使用/ buildWithParameters进行参数化   建立。这是假装为网络浏览器。

     

...因为网络浏览器将被重定向   到空白的404错误页面。同样,您实际上并没有使用API   在这里,您假装是网络浏览器。

因此,尽管API页面指出您可以请求/ build URL,但如果要获取构建的队列项URL作为“ location”标头,则必须请求/ buildWithParameters URL。