我只是在使用pip,Fabric和git來設置類似的東西。流程基本上是這樣的,並從中大量借用this script:
- 在我們的源代碼樹中,我們維護一個requirements.txt文件。我們將手動維護。
- 當我們做一個新版本時,Fabric腳本根據我們傳遞它的任何樹形創建一個存檔。
- Fabric將找到我們正在部署的內容的SHA,使用
git log -1 --format=format:%h TREEISH
。這給了我們SHA_OF_THE_RELEASE
- Fabric將得到我們需求文件的最後一個SHA,其中
git log -1 --format=format:%h SHA_OF_THE_RELEASE requirements.txt
。這就產生了散列的短版本,比如1d02afc
,它是這個特定版本的文件的SHA。
- Fabric腳本將查看我們的virtualenvs存儲在遠程主機上的目錄。
- 如果沒有一個名爲
1d02afc
目錄,新的virtualenv創建和設置與pip install -E /path/to/venv/1d02afc -r /path/to/requirements.txt
- 如果有爲現有
path/to/venv/1d02afc
,什麼都不做
的小魔術其中一部分是傳遞任何你想要的東西,然後讓它做包裝(來自Fabric)。通過使用git archive my-branch
,git archive 1d02afc
或其他任何東西,我保證會在我的遠程機器上安裝正確的軟件包。
我走了這條路線,因爲如果軟件包在發行版之間沒有改變,我真的不想有額外的virtuenvs浮動。我也不喜歡在自己的源代碼樹中擁有我所依賴的實際軟件包的想法。
鏈接被破壞+( – 2013-01-08 16:03:50