2011-03-21 58 views
1

我正在計劃一個觸發哈德森構建的mercurial changegroup鉤子。我怎樣才能觸發哈德遜一個mercurial支持項目的某些版本的構建?

項目被添加到隊列中,並且哈德森在有空閒插槽時構建它。問題在於,有人可能在此期間將代碼推送到了項目中,所以哈德森將構建新的版本(因爲它運行的內容類似「hg pull -u & & build」),而不是版本庫的修訂版本在第一次構建被觸發時。

有沒有解決這個問題的方法?也許使用參數化版本?如果它不適用於單個作業,也許我可以在每次推送時創建一個作業,並將mercurial url設置爲包含修訂版段?

感謝提示。

回答

1

在你的hook中,假設它是一個shell鉤子,你應該得到你的repo的tip的node id並且把它作爲參數傳給Hudson(現在是Jenkins的)API。獲得該值會看起來像:

export NODE_TO_BUILD=$(hg --id --rev tip) 

,那麼你會用你調用哪個格式傳遞作爲參數傳遞給哈德森的API:http://wiki.hudson-ci.org/display/HUDSON/Remote+access+API

和調整哈德森的工作是:

hg pull && hg update $NODE_TO_BUILD && build 
+0

嗯,但然後我需要一個自定義的工作不是?目前我們使用的是hudson mercurial插件。 – zedoo 2011-03-21 16:46:38

+0

哈德森應該將任何參數傳遞到您的構建腳本中作爲您可以在其中使用的環境變量。你是用Ant,Maven還是類似的東西構建的?它只需要檢查env是否構建一個NODE ID。 – 2011-03-21 16:49:35

+0

我不知道如果構建觸發,mercurial插件如何反應。我們目前使用導致hg pull -u的輪詢。如果觸發器執行相同的操作,那麼我們需要在pull -u和我們的構建之間添加一個步驟(我不知道我認爲它是shell),它將運行hg update $ REVISION。 – zedoo 2011-03-21 17:04:45

相關問題