2010-12-13 327 views
2

我已經設置了我的哈德森工作A.工作A取決於工作B和C.我已經用「構建其他項目」來設置它們。儘管每個作業都位於工作空間中的單獨目錄中(默認結構),但這種方式很好。但我需要作業B和C作業空間(根文件夾)。Hudson依賴關係

我已經考慮兩種方法:

  1. 更改工作區來找工作的,並通過「在其他項目上的觸發參數構建」變量推到作業,然後使用Ant構建腳本將它們複製到該位置,因爲我無法找到一個選項來更改作業B或C應該去的文件夾
  2. 觸發作業B,然後從構建腳本作爲作業A的一部分,然後C。這是通過遠程調用(發現它在某處stackoverflow),但該選項在我的配置中缺失,我找不到可以添加它的任何插件。

我理想的辦法是從那裏使用Ant構建腳本和觸發作業B和C antsvn或類似的東西。但我無法找到一個堅實的例子。

爲什麼我需要這種方式的原因很簡單 - 作業B是作業A和作業必不可少的CMS C有Python腳本需要在新版本登陸到生產服務器之前執行(這已經用py完成了-螞蟻)。

或者也許有更好的方法來管理這樣的依賴關係。任何幫助表示讚賞。

我希望它是有道理的。

回答

4

將作業「B」和「C」想象爲產生作業「A」需要的「工件」。然後,只需構建作業「A」,您只需導入由作業「B」和「C」生成的工件。

你的工作不應該共享工作區。否則如果在作業「B」或「C」被觸發時作業「A」正在建立,會發生什麼情況?你將有多個構建一次進行。但是,如果您從作業「B」和「C」中分離出「A」需求,則可以讓作業「A」導入這些依賴關係。這樣做有兩種方式:

  • 的辛苦,但正確方式:你應該創建一個版本庫在那裏工作可以獲取他們所需要的工件。如果這聽起來Mavinish給你,那好吧。但是,我已經使用了Maven架構,沒有Maven項目,它工作正常。您可以使用Artifactory或Nexus之類的東西作爲您的發佈存儲庫。然後使用wgetcurl從存儲庫獲取項目,並使用Maven的deploy:deploy-file插件發送這些內容。您需要Maven(這是一個Java進程)運行deploy:deploy-file,但您不需要Maven項目,甚至不需要Java項目。 deploy:deploy-file插件甚至不需要Maven pom.xml文件。把它看作更像是一個命令行工具,將東西發送到你的發佈版本庫。
  • 容易,但不正確方式:哈德森有Copy Artifacts plugin,你可以用它來做到這一點。問題在於它很容易設置,但很難開始追蹤。另外,它使你依賴於一個非常具體的工具。如果您決定離開哈德森,您可能無法複製此功能。