最近我們一直在尋找Mercurial的一些工作流程,因爲我們將其用於Web開發。我們需要一種自動的方式將推送到測試和實例的更改傳播到多個端點。這裏的想法的示意圖:使用Mercurial在多臺服務器上自動部署網絡
+-------+
|Dev |
| |
+-------+
| Push
+--------+
|
V
+-------+ Push +-------+
|Live |<--------|Test |
|server | |server |
+-------+ +-------+
| +-------+ | +-------+
+--->|Live 1 | +--->|Test 1 |
| | | | | |
| +-------+ | +-------+
| |
| +-------+ | +-------+
+--->|Live 2 | +--->|Test 2 |
| | | | | |
| +-------+ | +-------+
| |
| +-------+ | +-------+
+--->|Live 3 | +--->|Test 3 |
| | | |
+-------+ +-------+
基本上,這個想法是,所有我們的開發者需要做的是,一旦發展已經達到一個穩定的水平,發出推命令(沒有按」不一定只是一個hg push
)到測試服務器,並從那裏它會自動傳播出去。然後,一旦測試完成,我們會將它從測試推到現場(或者,如果更容易,我們可以從開發推到現場),並且這也會傳播到每個不同的實例。
如果我們可以相當容易地添加新的測試和活動實例(例如,如果IP被存儲在可以被腳本讀取的數據庫中等等),那將是很好的。
完成此操作的最佳方法是什麼?我知道Mercurial鉤子。也許是一個鉤子將運行的進程內腳本?我也研究過Fabric,這會是一個不錯的選擇嗎?
另外,每個端點需要什麼樣的支持軟件?如果每個服務器上都存在一個Mercurial存儲庫,它會是最簡單的嗎? SSH訪問會有好處嗎?等等......
感謝提詹金斯,我不知道它。無論如何,它看起來像SSH可能是要走的路。 – voithos 2011-06-16 18:16:13
@overthink - 非常有趣的感謝。你認爲使用面料的好處是什麼,比如做什麼?另外 - 通過命令行參數傳遞IP - 當你有兩套IP(例如兩種類型的服務器)時,這種方式是否有效? – UpTheCreek 2013-01-17 11:29:07
@UpTheCreek我想你可以用make來做,但是fabric是專門爲此構建的,並且通過ssh在遠程機器上內置了主機,角色和運行命令的概念。所以你最終得到的任務定義非常簡短,並且不需要很多機器來維護。對於多種服務器類型,我使用[結構角色](http://docs.fabfile.org/en/1.5/usage/execution.html#roles)。 – overthink 2013-01-17 14:27:26