我已经在作业配置中启用该工作可以从外部触发,我可以通过发送jenkins发送一个这样的内容的请求来真正触发它:
POST
http://myJenkins.com/myJob/buildWithParameters?token=MYTOKEN
参数:SCREEN_SIZE:27
触发作业创建将返回一个成功的201 CREATED http响应.
我的问题是我不知道创建的构建作业的ID.我想监视工作的状态.为了做到这一点,我需要知道id.否则,如果我只是采取最新的工作,我可以做错了工作.
有没有可靠的方式来获得创建的工作的ID?
更新:other answer在我的大约8个月后增加.我当时不知道响应中的位置标题.在某些情况下,这听起来像是一个很好的选择.也就是说,根据答案中的注意事项和意见(特别是参数化构建),似乎这个答案在某些情况下仍然有一些效用.
原来的答案:
不幸的是,他们并没有像现在这么简单.即通过例如以id的信息返回JSON响应.
但是,我相信一个固定的但是非常简单的解决方法就是利用你用来触发构建的URL中的cause参数,在这种情况下,添加唯一的文本,你可以稍后解析以确定你从您的自动化引发.
为了进一步对特定作业进行独特性,如果多个操作在同一时间运行,即使是自动化,还可以在cause参数中包含某种类型的唯一ID(可能只是RDBMS中的序列ID或类似的ID).
然后,您可以使用JSON API来获取有关您远程触发的作业的信息.再次,它有点间接,但可行:
点击形式的URL:
http://<server>:<port>/job/<jobname>/lastBuild/api/json
您可以添加?pretty = true以在浏览器中漂亮打印,以提高人的可读性.
这将让你得到最后一个版本的JSON.它将包含actions属性中的cause属性,在其中(在另一个名为shortDescription的嵌套属性)中,您将找到您添加的cause参数,如果这是您触发的构建之一.
您可以分析出特殊的静态文本和生成的ID,看看它们是否匹配.如果他们这样做,你可以从JSON中获取Jenkins id(搜索buildNumber,这是嵌套的).
如果该构建不是由您的自动化完全触发,或者是,但是ID不匹配,则可以重复N-1构建的过程,直到找到要查找的内容.
那个JSON的形式是:
http://<server>:<port>/job/<jobname>/<buildNumber>/api/json