我试图通过远程点击相应的网址来自动化Hudson。我正在使用python的urllib2来做同样的事情。
首先,我正在尝试构建现有作业并获取构建状态。
构建的示例网址如下所示:
http://tomcaturl:8080/hudson/job/.NET%20Build/build
然而,这会返回给我html数据。
Hudson docs说我可以用python / json / xml格式获取数据,所以我试着点击
http://tomcaturl:8080/hudson/job/.NET%20Build/build/api/json
但我完全没有数据,尽管构建成功。
有没有办法找出我的远程构建请求启动了哪个构建,以便我可以保持一对一的映射。
请注意我通过远程python程序执行此操作,但我无法访问hudson GUI。
答案 0 :(得分:3)
首先,如果您启用了任何安全/登录,则必须登录到/ job / JobName / build的远程hudson服务器。如果您允许在未登录的情况下启动构建,则这不是问题。
/ job / JobName / build请求将返回html数据。如果您未登录,则会获得重定向到登录页面的repsonse,并且不会启动构建。如果请求成功,您将无法重定向到登录,并且您可以假设构建已排队。您还可以使用项目的api url检查构建队列(参见下文)。请注意,在构建开始之前可能会有一个延迟,您可以通过调用/ job / JobName / build来控制它吗?delay = 0sec
API在作业/ JobName / build url下不可用,但您可以在此处查看api信息:
http://tomcaturl:8080/hudson/job/.NET%20Build/api
如果你将/ api / xml或/ api / json附加到url的末尾,那么显示信息(关于项目,特定构建等)的hudson中的大多数页面都有一个api页面。 原因/作业/ JobName / build没有api页面只是因为它不是信息页面的URL。
示例api请求:
xml调用有关项目的信息:
http://tomcaturl:8080/hudson/job/.NET%20Build/api/xml
json要求提供有关项目上次成功构建的信息:
http://tomcaturl:8080/hudson/job/.NET%20Build/lastSucessfulBuild/api/json