2010-11-10 96 views
1

我想知道是否有辦法在哈德遜(或任何各種插件)做到這一點。我的IDEAL場景:Hudson構建觸發API

我想通過類似REST的API觸發基於作業的構建,並且在該構建上,我希望它爲我返回一個作業ID。之後,我想調查此ID以查看其身份。完成後,我希望看到狀態和內部版本號。現在

,因爲我似乎無法得到那個工作,這是我目前的解決方案,我還需要實現:

當你做一個REST調用以進行構建,它不是很REST-FUL 。它只是返回HTML,我不得不做一種解析來獲取作業ID。或者,我可以爲列出所有工作的所有歷史記錄做一個REST調用,最新的一個將是我剛剛構建的那個。一旦我有了,我可以輪詢控制檯輸出以獲得構建的輸出。

任何人都知道我可以實現我的「理想」解決方案嗎?

回答

5

是的,您可以使用Hudson Remote API(如@Dan提到的)。具體而言,您需要將作業配置爲接受遠程觸發器(作業配置 - >構建觸發器 - >觸發器遠程構建),然後您可以使用簡單的HTTP GET將構建以正確的URL引發。

(您可能需要,如果你的哈德森需要身份驗證的其他箍通過一對夫婦跳)

我能夠開始wget的哈德遜工作:

wget --auth-no-challenge --http-user=test --http-password=test "http://localhost:8080/job/My job/build?TOKEN=test" 

這將返回一串您可以解析內部編號爲#20的HTML。內部版本號可以用來查詢作業是否完成/成功。

您可以從瀏覽器的大部分Hudson網頁檢查Hudson Remote API,這些網頁通常通過追加/api(或/api/xml以查看實際的XML輸出)訪問,例如, http://your-hudson/job/My job/api/


更新:我從你的問題,你可能知道很多東西,我寫看到的。有一點值得探索內置的Hudson API文檔。我剛剛發現了這個可能有幫助的珍聞。

您可以從URL獲取最新版本的版本號(如純文本):http://your-hudson/job/My job/lastBuild/buildNumber

一旦你的版本號,我覺得輪詢和作業狀態很簡單,一旦你理解了API。

+0

甜,我喜歡最新版本的URL! – shawnjan 2010-11-12 18:56:27

2

如果您不想要最新的內部版本號,但是您希望通過點擊構建網址觸發構建版本號,該怎麼辦?

據我所知,點擊該URL會返回一個302,它將您重定向到作業的主頁面,並且不顯示您觸發的構建編號是什麼。

+0

只需觸發構建,然後再看看lastBuild元素的請求? – Moulde 2013-04-09 21:17:56