2008-10-10 70 views
8

就在幾年前,開發人員實際上已將這些構建發送給客戶。這顯然是一場災難,其原因不勝枚舉。你推薦什麼工具來自動構建你的應用程序?

然後,當我們開始瞭解我們的方式的錯誤時,我們尋找一種方法來在專用的構建機器上自動構建整個應用程序。當時的文化非常反對引入外部工具,所以我們通過編寫一個VB應用程序來構建自己的自動構建系統。

這工作得很好,直到項目的結構開始發生變化,新的項目被添加,我們需要以不同的方式構建應用程序。然後,我們手卷的自動升降裝置的弱點就變得明顯,隨着時間的推移,日益繁重。現在這種疾病已經發展到QA(誰擁有我們的構建過程)甚至不能維護自動構建器,因爲它需要越來越多的編程技能。每當我們添加一個項目或改變某個現有項目中的某個項目時,它就會耗費更多的開發人員時間來使其發揮作用。由於系統被破壞,我們無法生產建築物的時間有好幾天了。

我現在正處於一個可以改變這個過程的位置,並且我正在尋求廢棄整個系統並在其中放置其他東西。我的目標是:

  • 有一個autobuild系統,可以在每天的特定時間以零個人交互運行。它應該能夠收集所有源代碼,編譯所有應用程序,創建設置,將完成的產品放到網絡共享中,並可能觸發自動測試系統(我們使用QTP)。
  • 自動構建系統應該具有足夠的靈活性,以便輕鬆適應項目中的變化而不需要進行重大改造。
  • 它應該很簡單,以便QA可以擁有該系統,並且不需要開發人員資源就如何進行構建進行更改。

你有什麼經驗?你能推薦一個自動構建系統嗎?我應該有不同的目標嗎?

回答

4

如果你在Microsoft堆棧上,肯定會查看MSBuild。

喬爾總是在繼續和FinalBuilder是多麼偉大,所以也許值得一看。

5

我目前正在使用與Ant集成的CruiseControl來控制項目構建。這允許構建時間表的靈活性,並且意味着您可以使用Ant腳本非常容易地自動化整個構建過程。此外,在缺陷修復期間,您可以設置CruiseControl以監視源代碼控制提交而不是時間段,並在發生這些提交時進行構建。這使開發人員能夠快速反饋缺陷修復程序。

+0

+1對於巡航控制系統,我將Moonlight作爲我公司的搭建工程師,我將其用於夜間搭建(約300多款手機搭配多種產品),並將其用於發佈版本。 – omermuhammed 2010-01-04 21:43:04

+1

象徵性地,我現在切換到Hudson :) IMO,它比CC更光滑,並且更容易設置不同的項目類型。 – workmad3 2010-01-05 15:57:51

1

對於隨MS Visual Studio提供的工具,您可能需要使用MSBuild。用於MSBuild的其他Community工具包甚至可以讓您從Subversion和zip輸出中檢出代碼。

我們在我們公司成功使用它。項目由多個子項目組成的解決方案組成。奇蹟般有效。

1

Visual Build Pro很好,如果你的機器是Windows。我認爲這將滿足您的要求QA擁有系統。但不要誤解我的意思,它非常強大。

4

我們剛剛從一組手動滾動的Perl腳本遷移到Buildbot安裝程序。我發現它是因爲這是什麼Google's using for Chrome

您可以做nightlies,或者它可以與源代碼控制集成,以便在任何人執行簽入或其他各種事情時執行獨立的測試構建。它也是平行的;您可以在構建服務器場中使用多臺計算機,無論是專門負責還是僅處理更多負載。

整個系統都是用Python編寫的,所以它是平臺不可知的,如果你需要在多個平臺上構建,這很重要。它可以在命令行中做任何事情;我們讓它爲用戶模式組件調用MSBuild,爲內核模式組件調用DDK build,併爲單元測試構建運行產品。

開箱即用,它支持most OSS source control tools,但是如果你使用的是TFS或其他東西,你可能需要修改你安裝在從機上的軟件包。

+0

+1 buildbot!我最近從巡航控制切換到BB,優點是很多(更容易配置,跟蹤任意日誌文件,易於調試,滑稽的IRC控制機器人...) – richq 2008-10-10 20:51:18

2

我認爲你在這裏的正確軌道上。

無論是誰管理自動構建過程,都需要對您的解決方案如何配合在一起有基本的瞭解。這並不一定意味着要知道如何編寫代碼或架構解決方案,但他們需要對解決方案如何編譯,打包本身等有深入的瞭解。

您可能需要爲人員或團隊之間的構建分擔責任來完成這個。我想說,每天構建是一個「團隊責任」。

我會考慮建立一個可以擴展爲「特殊用途」構建(除了構建發佈版本之外)的基線構建配置,例如,國際版本中,的FxCop /質量工具的配置,打造+運行單元測試,持續集成構建,構建配置對開發者的工作站上運行,等

相反,我的目標是實現以下目標:

  • 自動版本,簽約等
  • 能力生成詳細輸出(記錄),以幫助調試版本打破
  • 在這一點 - 它應該妥善處理錯誤,獲取儘可能多的信息,並記錄它正確
  • Consiste NCY - 它應該以同樣的方式,每次產生重複的結果
  • 在乾淨的,有限的接入環境
  • 運行
  • 很好的註釋/文檔,以便它可以通過新員工理解等
  • 選項生成發佈說明,編譯指標,生成報告(如果此選項可用)
  • 部署到多個環境的能力
  • 支持從源代碼控制獲取源代碼的不同方式,例如通過更改集,標籤,日期等
  • 至於工具建議,我用過FinalBuilder,Visual Build Pro,MSBuild/Team Build,nAnt,CruiseControl和CIFactory plus以及老式的批處理文件。

    每個人都有自己的優點和缺點,我不打算提出建議,只是表示具有良好的用戶界面支持的產品有點容易處理,但有時候功能要差得多。如果您正在使用VIsual Studio,MSBuild功能非常強大,但學習曲線有點陡峭。

    5

    我使用FinalBuilder和FinalBuilder服務器進行夜間構建。這有時候會有點bug,但是如果你認爲通過創建可以構建X項目類型的可擴展項目非常容易,可以使用變更腳本構建數據庫並將其部署到測試服務器。

    它還可以處理各種奇妙和奇妙的東西,比如每晚創建一個ZIP文件並將其上傳到FTP或自動創建ISO映像。

    1

    我們使用CruiseControl.NET和UppercuT(它使用NAnt)來執行此操作。 UppercuT使用約定進行構建,因此通過回答三個問題(您指定的解決方案是什麼?源代碼管理的路徑是什麼?您的公司的名稱是什麼?),並且您正在構建,從而讓人們開始真正輕鬆入門。

    http://code.google.com/p/uppercut/

    一些很好的解釋在這裏:UppercuT

    0

    我們使用哈德森buildbot用於從Ant構建腳本大的Java Web應用程序的建設。哈德森對我們的目的來說非常甜蜜。它具有主/從設置,因此可以同時完成構建(按定時器或按需)。從節點可以是任何操作系統/硬件組合,前提是它具有所需的構建工具,並且位於網絡上(並且每10分鐘不會崩潰)。

    完整的基於Web的界面,包括實時控制檯輸出,更改日誌,來自構建的工件在整個網絡中都可用,包括以前的構建(如果成功)。很棒的醬!

    相關問題