我是詹金斯的新手,最好的方法是什么?我调用了jenkins URL来触发带有令牌的远程构建:
http://host/job/job-name/buildWithParameters?token=value¶m1=val1
通过REST客户端测试,我看到这会返回带有位置标头的HTTP 201,用于重定向到另一个资源:
但查看该资源网址返回404未找到
是否有比屏幕抓取(或是否有API调用?)更好的方法来获取我触发的给定作业的最后/最新作业#(运行或已完成)?理想情况下,我宁愿让呼叫的HTTP响应告诉我我刚刚开始的匹配作业运行#是什么,因为在并发触发相同作业(具有不同参数),最后/最新作业可能不是你踢的那个。
我需要获取作业运行编号才能查看控制台输出以获取一些信息。例如该作业在后台执行一些任务,并输出我需要获取的进程ID以便以后终止等等。
答案 0 :(得分:2)
使用REST API触发构建,只需将构建队列入队列,等待执行。因此,API调用会立即返回,而无需等待构建开始或完成(可能两者都不可能发生)。
但是对您的请求的响应将包含一个Location
HTTP标头,指向新创建的队列项。例如:
HTTP/1.1 201 Created
Location: http://localhost:8080/queue/item/16/
检查此资源的API网址(即将api/json
或api/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
)。