2011-10-11 88 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