2010-10-14 42 views
2

我正在關注的哈得遜/蟒蛇/ virtualenv中CI解決方案described at heisel.org但是這一步實在是擦傷的輪廓,而這也正是在virtualenv中,只爲CI運行中創建,配置部分:是否可以預先創建一個用於哈德森版本的virtualenv?

pip install -q -E ./ve -r requirements.pip 
pip install -q -E ./ve -r requirements-test.pip 

這需要花費過多的時間來運行,每次源文件更改時,我們都會重新下載相當數量的數據。

是否有可能在Hudson中創建模板工作空間,以便不檢出到裸露的工作空間,而是檢出一個預先準備好的模板工作空間?

回答

1

這裏有幾個選項:

  1. 有在源存儲庫炸燬到 virtualenv中的存檔/ PIP安裝。您需要將virtualenv的起點重新定位。

  2. 使用任何SCM選項適用不抹出工作 之間建立(例如使用svn更新或不檢查Mercurial的乾淨構建 選項)。然後將安裝命令保留在構建腳本中,但將它們放在 的if語句下,以便僅在.pip_installed文件不存在的情況下運行(例如)或者設置了構建參數。

  3. 你可能會得到Clone Workspace插件來做你想要的東西 。但這是一種替代SCM,我猜你可能不需要 ,因爲Hudson不會從多個SCM中檢出(有關解決此問題的一些想法,請參閱this previous question)。

這可能也設置您的PIP配置從包的 本地緩存中拉好主意。

pip -f http://localhost/packages/ 
0

增強功能是將virtualenv打包到由需求文件的散列命名的存檔中。如果需求文件自上次構建以來未更改,請將該壓縮文件解壓縮到一個空的virtualenv目錄中。如果需求文件已更改,則歸檔文件將不存在,因此您運行pip install來構建環境,然後將其存儲在新的歸檔中。

0

如果你爲每個工作區創建一個新的venv,那麼你只需要在開始時安裝所有的deps,所以後續的構建要快得多。看我的帖子我寫了一個腳本來幫助:

"Pretty" Continuous Integration for Python