首先要做的事情。我的CI服務器是運行CruiseControl.NET的虛擬機。我不使用詹金斯,所以我真的不能評論它。從外觀上看,詹金斯比CC.NET更加發達。根據虛擬問題和物理問題:最終,就CI而言,它並不重要。只要它在網絡上可見並且有足夠的資源來執行它的功能,其餘的只是管理。就我個人而言,我發現虛擬化的好處值得付出額外的努力。您可以輕鬆添加資源,移動其物理位置,站起來更多的虛擬機來運行集羣。 是衆所周知的,現在每個人都在這樣做。
我的CI服務器位於VMWare ESX服務器上,它有大量的CPU和內存需求。它運行許多其他虛擬機。我有大約35個站點通過CI運行,大概有20個站點託管在機器上,還有70個站點通過CI儀表板手動觸發來設置。我從來沒有遇到任何相關的性能問題。
您的構建服務器理想情況下應該與您計劃部署代碼的計算機具有相同的設置。對於網站來說,這將與您的生產服務器(可能是Windows 2003或2008)具有相同的操作系統。對於桌面應用程序,我可能會選擇最新和最好的操作系統,您的目標是支持和支持。
使用具有多個操作系統的多臺機器只有在構建您試圖在多個操作系統上支持的桌面應用程序時纔有用。在這種情況下,擁有多臺服務器將是理想的,但我認爲這需要很多工作才能完成。就個人而言,我會從簡單開始,讓所有事情都運行起來,並在他們變得真正必要時開始添加一些東西
正如我所提到的,我使用CruiseControl.NET。到目前爲止,這很棒,我對此感到滿意。由於它是用.NET編寫的,而且您使用的是.NET,所以服務器運行所需的運動部件較少(我看到Jenkins是建立在Java之上的)。編寫插件/擴展在理論上會更容易,因爲您已經擁有.NET人員。我從來沒有寫過CC.NET的擴展,所以我不能肯定地說,儘管我知道這是可能的。缺點是社區很小,主動發展緩慢。
最後,我會補充說,這將是很多工作的開始。我花了6個月的時間纔將CI服務器準備好投入生產,還有一些工作將我們所有的項目遷移到其他項目上,並且還有更多的項目來培訓其他開發人員如何使用或使用它。
因此,在總結,
- 虛擬化是很好的! (但它並不重要)。
- 如果可能的話,您應該將您的CI環境與您部署的任何環境進行匹配。
- 你最好準備好長期承諾。
- 持續集成很好,你不會後悔建立一個CI服務器。無論你選擇,這將是比「牛仔編碼」是用來去:)
編輯其他答案張貼他們的過程比較好,所以我想我應該這樣做呢! :)
我的商店建立LAMP和.NET網站,所以我們需要一些可以有效地與兩者兼容的東西。我們將CC.NET作爲核心框架運行,但幾乎所有功能都由自定義Nant腳本執行。我們使用Nant是因爲它基於.NET,並且內置了.NET命令,並且2)易於執行命令行操作,這些操作構成了我們所有構建步驟的核心。
CC.NET監聽SVN服務器,並在更新完成後抓取更新。 CC.NET將它們檢查出來並觸發執行所有實際工作的NANT任務。對於.NET,這意味着要進行單元測試mstest並且要構建和發佈msbuild。 PHP通常只是將文件直接移動到目標環境。然後,如果所有步驟都成功,則Robocopy將將文件複製到目標服務器,該目標服務器在Group Policy startup script(Windows服務器映射爲net use且LAMP服務器映射爲Webdrive)期間映射爲網絡驅動器。
我們有開發服務器,登臺/ QA服務器和生產服務器。由於我們使用.NET和LAMP,因此每個環境都有一個服務器 - 總共有6個服務器,全部都是虛擬的。我們的開發服務器是唯一被設置爲持續集成構建的服務器。分階段和生產只能與其他一些SVN巫術一起構建,以防止意外部署。我們還使用MXMLC構建和單元測試AcrionScript,但這對我們來說很少見。
你在建設網站或桌面應用程序嗎?你的生產目標是什麼樣的環境? – Jeff 2011-05-14 23:35:36
嗨!這是一個Web應用程序。 – 2011-05-15 17:23:28