2011-10-11 118 views
0

我试图通过远程点击相应的URL来自动化Hudson。我使用python的urllib2来做同样的事情。远程执行Hudson作业

首先,我试图建立一个现有的工作,并获得构建状态。

为建立一个样本网址应该是这样的:

http://tomcaturl:8080/hudson/job/.NET%20Build/build

然而,这返回到我的HTML数据。

哈德森文档说我可以在python/JSON/XML格式的数据,所以我试着打

http://tomcaturl:8080/hudson/job/.NET%20Build/build/api/json

但我没有得到任何的任何数据,尽管构建成功发生。

有没有办法找出哪个构建是由我的远程构建请求启动的,以便我可以维护一对一的映射。

请注意,我通过远程python程序执行此操作,并且我无法访问hudson GUI。

回答

2

首先,如果您启用了任何安全/登录,您必须登录到/ job/JobName/build的远程Hudson服务器。如果您允许在不登录的情况下启动构建,这不是问题。

/job/JobName/build请求将返回html数据。如果您未登录,您将得到一个repsonse重定向到登录页面,并且构建不会启动。如果请求成功,您将不会获得重定向到登录名,并且您可以假定构建已排队。您也可以使用项目的api URL检查构建队列(请参阅下文)。请注意,构建开始之前可能会有延迟,您可以通过调用/ job/JobName/build来控制它吗?delay = 0sec

该API在作业/ JobName /构建url下不可用,但可以看到API的信息在这里:

http://tomcaturl:8080/hudson/job/.NET%20Build/api

在哈德森大多数页面显示信息(有关项目,具体建设等),如果你附加有一个API页/ API/xml或/ API/JSON来网址的结尾。 Reason/job/JobName/build没有api页面,只是因为它不是信息页面的网址。

示例API请求:

XML呼吁有关项目的信息:

http://tomcaturl:8080/hudson/job/.NET%20Build/api/xml

JSON呼吁有关项目的最后成功构建信息:

http://tomcaturl:8080/hudson/job/.NET%20Build/lastSucessfulBuild/api/json

+0

而且,即使它不是成功的http,以下内容将简单地为您提供上一次构建的信息:// http:// tomcaturl:8080/hudson/job/.NET%20Build/lastBuild/api/xml或http:// http:// tomcaturl:8080/hudson/job/.NET%20Build/lastBuild/api/json –

+0

谢谢Anders和sdmythos_gr。 – django

+0

关于如何执行映射的任何想法,我可以让构建调用返回一个BUILD_ID/BUILD_TAG/BUILD_NUM,或者构建始终安排。 – django