如何使用参数对jenkins构建进行HTTP调用,然后获取该调用触发的正在运行的作业的输出?

时间:2017-03-15 23:25:04

标签: jenkins

我是詹金斯的新手,最好的方法是什么?我调用了jenkins URL来触发带有令牌的远程构建:

http://host/job/job-name/buildWithParameters?token=value&param1=val1

通过REST客户端测试,我看到这会返回带有位置标头的HTTP 201,用于重定向到另一个资源:

http://host/queue/item/34355/

但查看该资源网址返回404未找到

是否有比屏幕抓取(或是否有API调用?)更好的方法来获取我触发的给定作业的最后/最新作业#(运行或已完成)?理想情况下,我宁愿让呼叫的HTTP响应告诉我我刚刚开始的匹配作业运行#是什么,因为在并发触发相同作业(具有不同参数),最后/最新作业可能不是你踢的那个。

我需要获取作业运行编号才能查看控制台输出以获取一些信息。例如该作业在后台执行一些任务,并输出我需要获取的进程ID以便以后终止等等。

1 个答案:

答案 0 :(得分:2)

使用REST API触发构建,只需将构建队列入队列,等待执行。因此,API调用会立即返回,而无需等待构建开始或完成(可能两者都不可能发生)。

但是对您的请求的响应将包含一个Location HTTP标头,指向新创建的队列项。例如:

HTTP/1.1 201 Created
Location: http://localhost:8080/queue/item/16/

检查此资源的API网址(即将api/jsonapi/xml附加到网址)将返回有关排队项目的信息。

如果构建仍在队列中,您将看到why原因(例如,等待可用的代理),但如果构建已经开始,您将看到{ {1}}字段指向构建。例如,已启动的构建的API JSON:

executable.url

通过该构建URL的{ … "url": "queue/item/16/", "executable": { "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun", "number": 16, "url": "http://localhost:8080/job/test/4/" } … } 端点,您可以获取构建日志,例如: logText

此功能在构建的API页面上有更详细的记录(即http://localhost:8080/job/test/4/logText/progressiveText?start=0)。