hengheng123456789

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks


          對(duì)開源 CI 服務(wù)器:CruiseControl、Luntbuild 和 Continuum 的調(diào)查


          Paul Duvall (paul.duvall@stelligent.com), CTO, Stelligent Incorporated

          2006 年 10 月 23 日

          由于有許多持續(xù)集成服務(wù)(CI)服務(wù)器可以選擇,所以很難決定哪個(gè)適應(yīng)自己。在 讓開發(fā)自動(dòng)化 系列的第二篇文章中,開發(fā)自動(dòng)化專家 Duvall 采用一致的評(píng)估標(biāo)準(zhǔn)和很多說(shuō)明性示例,介紹了一些開源 CI 服務(wù)器,包括 Continuum、CruiseControl 和 Luntbuild。

          在我腦海里,我至少能想到 12 種在當(dāng)前市場(chǎng)上可用的 CI 服務(wù)器,包括商業(yè)的和開源的。雖然它們都試圖自動(dòng)進(jìn)行軟件構(gòu)建的過(guò)程,但是都有各自的優(yōu)點(diǎn)和不足。而且,有太多工具可供選擇的不良后果就是很難決定究竟應(yīng)該選擇使用哪個(gè)。

          在選用自動(dòng)化過(guò)程的工具時(shí),要時(shí)刻記住的就是:工具要 確實(shí)適用。選擇錯(cuò)誤的工具可能會(huì)限制整體的靈活性,會(huì)導(dǎo)致執(zhí)行簡(jiǎn)單動(dòng)作反而需要更長(zhǎng)時(shí)間,或者會(huì)把人鎖定在特定的支持工具或過(guò)程。

          選擇 CI 服務(wù)器的標(biāo)準(zhǔn)

          通常,對(duì)一個(gè)新工具的決策分析可以歸結(jié)如下:

          我聽說(shuō) Tim 在使用 Acme Inc 的工具,而且我認(rèn)為 Tim 是個(gè)聰明人。所以,我也要使用 Acme Inc 的工具。現(xiàn)在我也是個(gè)聰明人了。
          關(guān)于本系列
          作為開發(fā)人員,我們的工作就是為用戶提供自動(dòng)化處理;但是,我們中的許多人卻忽視了自動(dòng)化自己的開發(fā)過(guò)程的機(jī)會(huì)。出于這個(gè)目的,讓開發(fā)自動(dòng)化 這一系列的文章專門研究了自動(dòng)化軟件開發(fā)過(guò)程的實(shí)際應(yīng)用,并教您 什么時(shí)候如何 成功應(yīng)用自動(dòng)化。

          反過(guò)來(lái),如果您問(wèn) Tim 為什么 他選擇使用 Acme Inc 的工具,您可能會(huì)發(fā)現(xiàn)是他的公司強(qiáng)制要求使用的。這就是為什么重要的是要根據(jù) 自己的 具體技術(shù)和政策需求對(duì)工具進(jìn)行分析。如果不這么做,可能就會(huì)選擇到不符合需求的工具,甚至更糟糕的是,不能帶來(lái)任何幫助的工具。

          在決策的時(shí)候,通常多數(shù)人都會(huì)把重點(diǎn)放在工具的特性上。但是要記住,雖然特性的確重要,但還有其他指標(biāo)需要考慮。在我的實(shí)踐中,我發(fā)現(xiàn)以下五個(gè)指標(biāo)在評(píng)估工具時(shí)最有幫助:

          什么是持續(xù)集成?

          持續(xù)集成(CI)是一種實(shí)踐,可以讓團(tuán)隊(duì)在持續(xù)的基礎(chǔ) 上收到反饋并進(jìn)行改進(jìn),不必等到開發(fā)周期后期才尋找和修復(fù)缺陷。諸如 CruiseControl 之類的檢查工具是在后臺(tái)運(yùn)行的,它們輪詢版本控制存儲(chǔ)庫(kù),從中尋找更改之處。當(dāng)發(fā)現(xiàn)某一更改時(shí),這類工具就會(huì)通過(guò) Ant 執(zhí)行預(yù)定義的構(gòu)建腳本。持續(xù)檢查借助持續(xù)集成的實(shí)踐得以改進(jìn)。

          • 特性
          • 可靠性
          • 壽命
          • 目標(biāo)環(huán)境
          • 易用性

          而且不要忘記,客觀地 檢查這五個(gè)方面也是重要的。

          產(chǎn)品特性

          說(shuō)到 CI 服務(wù)器的特性,應(yīng)當(dāng)考慮該工具與版本控制系統(tǒng)的集成、處理構(gòu)建平臺(tái)(例如 Ant 和 Maven)的能力以及提供反饋和報(bào)告的能力。而且不要忘記檢查其他特性,例如構(gòu)建標(biāo)號(hào)和管理項(xiàng)目的依賴項(xiàng)。最后,在需要做一些特定的增強(qiáng)時(shí),理解產(chǎn)品的可擴(kuò)展性會(huì)很有幫助。

          表 1 詳細(xì)說(shuō)明了每個(gè)特性:


          表 1. 詳細(xì)的 CI 服務(wù)器評(píng)估特性
          特性 解釋
          版本控制系統(tǒng)集成 如果工具不支持您所使用的特定版本控制系統(tǒng),您真的會(huì)為它編寫一個(gè)定制集成么?
          構(gòu)建工具集成 在選擇 CI 服務(wù)器時(shí),需要考慮目前或?qū)⒁褂媚膫€(gè)構(gòu)建工具。對(duì)于 Java™ 編程,有兩個(gè)自然的選擇:Ant 和 Maven,幾乎所有 CI 工具都支持它們。如果構(gòu)建系統(tǒng)既不是 Ant 也不是 Maven,那么 CI 工具支持從命令行運(yùn)行程序的功能么?
          反饋和報(bào)告 想想老話 “如果樹倒在森林中,能有人聽到么?” 如果構(gòu)建失敗,會(huì)有人知道么?如果沒(méi)人知道,那么使用 CI 工具的目的是什么?所有的 CI 工具都提供一些通知機(jī)制,但是哪個(gè)最適合您呢?電子郵件?即時(shí)消息?RSS?
          標(biāo)號(hào) 有些開發(fā)團(tuán)隊(duì)喜歡跟蹤構(gòu)建,給構(gòu)建一個(gè)唯一的標(biāo)號(hào),這樣日后就能找到具體的構(gòu)建實(shí)例。如果這對(duì)您來(lái)說(shuō)很重要,那么要注意只有少數(shù) CI 服務(wù)器提供了這個(gè)功能。
          項(xiàng)目依賴項(xiàng) 某些情況下,在構(gòu)建了一個(gè)項(xiàng)目之后,可能需要構(gòu)建其他依賴項(xiàng)目。有些 CI 服務(wù)器支持這個(gè)特性,有些不支持。
          易于擴(kuò)展 擴(kuò)展工具當(dāng)前的功能有多容易?是否用插件就可以實(shí)現(xiàn)簡(jiǎn)單的擴(kuò)展,還是總得修改代碼?

          從特性的角度來(lái)說(shuō),以上提到的幾點(diǎn)在選擇所需要的正確的 CI 服務(wù)器時(shí),至關(guān)重要。

          產(chǎn)品可靠性

          因?yàn)橄螺d和使用開源 CI 服務(wù)器很簡(jiǎn)單,所以可以試用產(chǎn)品來(lái)判斷它的可靠性。而且,在工具的可靠性和它在市場(chǎng)上的時(shí)間之間,通常存在一些相關(guān)性。使用新產(chǎn)品時(shí),就會(huì)冒著有未發(fā)現(xiàn)的 bug 的風(fēng)險(xiǎn)。而且,用戶群是發(fā)現(xiàn)工具出現(xiàn)的問(wèn)題的優(yōu)秀資源。大量的問(wèn)題貼子或者過(guò)多的復(fù)雜問(wèn)題,就表示用戶對(duì)這個(gè)工具的意見較大。

          因?yàn)槲疫@里討論的服務(wù)器是開源的,所以很容易發(fā)現(xiàn)下載的人數(shù),這也會(huì)是產(chǎn)品健康程度的一個(gè)指示。用戶少可能意味著反饋渠道少,可能需要換個(gè)地方看看。

          壽命前景

          在下載 CI 服務(wù)器之前,了解這個(gè)服務(wù)器未來(lái)的前景會(huì)有幫助。簡(jiǎn)單地說(shuō),使用已經(jīng)死亡或正走向死亡的產(chǎn)品不是個(gè)好主意。可以檢查該工具已經(jīng)出現(xiàn)了多少年、在它的用戶群中是否有正常數(shù)量的活動(dòng)。就像可以從用戶群來(lái)判斷產(chǎn)品的可靠性一樣,活躍的社區(qū)是工具未來(lái)前景良好的征兆。

          目標(biāo)環(huán)境

          CI 服務(wù)器不能在 所有 環(huán)境下工作。需要考慮服務(wù)器支持哪個(gè)操作系統(tǒng)以及具體的系統(tǒng)需求。例如,如果工具是用最新版本的 Python 編寫的,那么需要確定這個(gè)版本 Python 能夠用于自己的操作系統(tǒng)。

          易用性

          產(chǎn)品的易用性可能是最主觀的指標(biāo)。有些人愿意手工修改配置文件,而有些人想讓所有管理任務(wù)都在應(yīng)用程序中執(zhí)行,例如 Web 控制臺(tái)。有些服務(wù)器要求從一個(gè)屏幕單擊到下一個(gè)屏幕來(lái)執(zhí)行簡(jiǎn)單的管理,而其他服務(wù)器則提供了直觀的向?qū)А?

          如果想理解 CI 服務(wù)器的具體細(xì)節(jié),那么漂亮的管理 Web 表單就不重要了;但是,如果人手不足、工作繁忙,那么可能不會(huì)想在管理 CI 服務(wù)器上花太多時(shí)間。

          記住我在這節(jié)討論的五個(gè)方面,再來(lái)看一下三個(gè) CI 服務(wù)器:Apache 的 Continuum、CruiseControl 和構(gòu)建管理服務(wù)器 Luntbuild。





          回頁(yè)首


          Apache Continuum

          Continuum 是最新的 CI 服務(wù)器之一,也是值得關(guān)注的一個(gè)新進(jìn)入者。Continuum 的安裝和配置很簡(jiǎn)單:只要下載和釋放 ZIP 文件,運(yùn)行命令行程序,就可以運(yùn)行了。基于 Web 的界面使得配置項(xiàng)目很容易。而且,還不需要安裝 Web 服務(wù)器,因?yàn)?Continuum 內(nèi)置了 Jetty Web 服務(wù)器。并且,Continuum 可以作為 Windows 服務(wù)運(yùn)行,還在應(yīng)用程序的某些部分嵌入了上下文敏感的文檔,從而提供了很多幫助。

          想要更多細(xì)節(jié)信息?
          面對(duì)如此之多 CI 服務(wù)器可以選擇,本文可以引導(dǎo)您更詳細(xì)地研究每個(gè)服務(wù)器,并決定哪個(gè)最合適。因?yàn)槲冶容^了三個(gè)不同的服務(wù)器,所以我沒(méi)有深入每個(gè)服務(wù)器的特定細(xì)節(jié)。我只是把重點(diǎn)放在了這些服務(wù)器安裝后就提供的選項(xiàng)上。如果需要更多信息,請(qǐng)參考每個(gè)服務(wù)器的安裝和配置指南。

          易于使用

          在使用 Continuum 時(shí)會(huì)注意到的第一件事就是它的易用性。能夠在幾分鐘之內(nèi)就把服務(wù)器運(yùn)行起來(lái)并讓它去查詢修改。實(shí)際上,在 Windows 上啟用 Continuum 只需要四步:

          1. 下載 Continuum ZIP 文件(請(qǐng)參閱 參考資料)。
          2. 把文件的內(nèi)容釋放到本地目錄。
          3. 運(yùn)行 run.bat 文件,然后運(yùn)行 InstallService.bat。
          4. 打開瀏覽器指向 http://localhost:8080/。

          Continuum 內(nèi)置支持五個(gè)版本控制系統(tǒng):Subversion、CVS、StarTeam、Bazaar 和 Perforce。也部分地支持其他版本控制工具,例如 Visual Source Safe 和 ClearCase。 Continuum 還支持四種構(gòu)建機(jī)制:Ant、Maven1、Maven2 和 Shell(命令行)。

          配置 Continuum

          在第一次訪問(wèn) Continuum Web 應(yīng)用程序時(shí),默認(rèn)是 guest 帳戶。guest 提供了對(duì)所有項(xiàng)目的只讀存取,沒(méi)有管理或配置項(xiàng)目的能力。但是,可以很容易地創(chuàng)建 Administrative 用戶,然后設(shè)置一些適用于所有項(xiàng)目的屬性。

          圖 1 顯示了管理頁(yè)面,它提供了管理所有項(xiàng)目的 Continuum 設(shè)置的能力,包括創(chuàng)建 Admin 帳戶、構(gòu)建的輸出和部署目錄:


          圖 1. Continuum 的配置很簡(jiǎn)單
          配置 Continuum

          把項(xiàng)目添加到監(jiān)視器

          對(duì) Continuum 進(jìn)行配置讓它監(jiān)視項(xiàng)目也非常簡(jiǎn)單。簡(jiǎn)單到僅僅是選擇期望的構(gòu)建平臺(tái),例如 Ant 或 Maven2,然后把 Continuum 指到期望的版本控制系統(tǒng)。

          圖 2 顯示了設(shè)置 Ant 項(xiàng)目時(shí)需要填充的字段:


          圖 2. 在 Continuum 中創(chuàng)建項(xiàng)目
          在 Continuum 中創(chuàng)建項(xiàng)目

          在保存了這個(gè)信息之后,Continuum 每小時(shí)查詢版本控制系統(tǒng)一次。可以修改項(xiàng)目的設(shè)置,查詢得更頻繁或更少些。我們?cè)谶@里談到的是 持續(xù) 集成,我建議每五 分鐘檢查修改一次,而不要每小時(shí)一次。

          默認(rèn)情況下,在使用 Ant 時(shí),Continuum 在項(xiàng)目的根目錄查找項(xiàng)目的 build.xml 文件。如果使用不同的名稱或者這個(gè)文件不在項(xiàng)目的根目錄,可以修改這個(gè)設(shè)置。

          雖然 Continuum 還是 CI 舞臺(tái)上的新人,但是它以其易用性和對(duì)當(dāng)前眾多流行的版本控制系統(tǒng)和構(gòu)建工具的支持,還是給這一領(lǐng)域帶來(lái)了巨大的沖擊。我希望在未來(lái)的版本中會(huì)有添加和查看報(bào)告的功能。





          回頁(yè)首


          CruiseControl

          CruiseControl 是 CI 服務(wù)器的老者。它已經(jīng)用了有五年多了,在許多方面, CruiseControl 服務(wù)器 已經(jīng)成為持續(xù)集成實(shí)踐的同義詞。出于完全坦白的目的,我應(yīng)當(dāng)提到,我也是 CruiseControl 的多年的老用戶。

          改進(jìn)的安裝

          如果您從最后一次使用 CruiseControl 到現(xiàn)在已經(jīng)有段時(shí)間,而且認(rèn)為它的安裝和配置是個(gè)負(fù)擔(dān),那么您可以看看最新版本。現(xiàn)有,有許多方式安裝 CruiseControl。例如,如果使用 Windows,會(huì)發(fā)現(xiàn)最簡(jiǎn)單的方式是下載二進(jìn)制可執(zhí)行文件,然后運(yùn)行它。不用擔(dān)心,還可以下載源代碼。

          安裝之后,CruiseControl 預(yù)先配置了一個(gè)配置文件,輪詢 CVS 存儲(chǔ)庫(kù)并執(zhí)行 Ant 構(gòu)建腳本。同樣也不需要安裝 Web 服務(wù)器,因?yàn)?CruiseControl 也內(nèi)嵌了 Jetty。

          輪詢版本控制系統(tǒng)

          比起 Luntbuild 和 Continuum,CruiseControl 提供了對(duì)超過(guò)十種不同版本控制系統(tǒng)的支持。而且,CruiseControl 對(duì)這些工具中的許多定制命令也提供了支持。清單 1 是一個(gè)使用 CruiseControl config.xml 腳本輪詢 Subversion 存儲(chǔ)庫(kù)的示例:


          清單 1. 通過(guò) config.xml 文件輪詢存儲(chǔ)庫(kù)
          <listeners>
                      <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
                      </listeners>
                      <modificationset quietperiod="30">
                      <svn RepositoryLocation="http://www.qualitylabs.org/svn/ambientorb/trunk"
                      username="bfranklin"
                      password="G0Fly@Kite"
                      />
                      </modificationset>
                      

          執(zhí)行構(gòu)建腳本

          當(dāng)在版本控制系統(tǒng)(例如 Subversion)中發(fā)現(xiàn)修改時(shí),可以很容易地配置 CruiseControl 去執(zhí)行委托的構(gòu)建腳本。例如,清單 2 演示了從 config.xml 調(diào)用 Ant 腳本,它指示 CruiseControl 每 60 秒鐘查詢 Subversion 存儲(chǔ)庫(kù)一次,并執(zhí)行另一個(gè) Ant 腳本。 委托的構(gòu)建腳本(沒(méi)有顯示)刪除舊文件,從 Subversion 簽出最新的源代碼,并在代碼上運(yùn)行項(xiàng)目的構(gòu)建腳本。


          清單 2. 執(zhí)行 Ant 構(gòu)建腳本
          <schedule interval="60">
                      <ant anthome="apache-ant-1.6.5" buildfile="build-${project.name}.xml"/>
                      </schedule>
                      

          當(dāng)設(shè)置了 CruiseControl 的這個(gè)方面并啟動(dòng)服務(wù)器之后,可以訪問(wèn)如圖 3 所示的 CruiseControl Web 控制板:


          圖 3. CruiseControl 控制板
          CruiseControl 控制板

          CruiseControl 控制板

          要接收最新構(gòu)建的反饋,可以把 htmlemail 插件添加到清單 3 所示的 config.xml 腳本。可以用 config.xml 文件配置更多反饋機(jī)制,例如發(fā)送文本消息、電子設(shè)備(通過(guò) X10)、甚至即時(shí)消息。


          清單 3. 用 CruiseControl 發(fā)送電子郵件
          ...
                      <plugin name="htmlemail"
                      buildresultsurl="http://${env.COMPUTERNAME}/cruisecontrol/buildresults/${project.name}"
                      mailhost="${smtp.server}"
                      username="${mail.username}"
                      password="${mail.password}"
                      returnaddress="${buildmaster.email}"
                      returnname="${buildmaster.name}"
                      subjectprefix="${project.name} build"
                      xsldir="webapps/cruisecontrol/xsl"
                      css="${reportdir}/cruisecontrol.css"/>
                      ...
                      <htmlemail>
                      <always address="${buildmaster.email}"/>
                      <failure address="${buildmaster.email}"/>
                      </htmlemail>
                      

          CruiseControl 提供了許多有用的特性,有強(qiáng)大的用戶社區(qū),極具擴(kuò)展性。與本文中評(píng)估的其他工具相比,有些開發(fā)人員覺(jué)得 CruiseControl 不太容易使用。而另一方面,有些開發(fā)人員則發(fā)現(xiàn)用 XML 腳本進(jìn)行修改提供了更好的控制。





          回頁(yè)首


          Luntbuild

          從面市年頭上說(shuō),Luntbuild 位于 Continuum 和 CruiseControl 之間。比起 Continuum 和 CruiseControl,Luntbuild 的目標(biāo)是為并行開發(fā)和用戶管理之類的事情提供支持的構(gòu)建管理服務(wù)器。它的整個(gè)配置是通過(guò) Web 應(yīng)用程序管理的,所以沒(méi)有配置文件需要處理。它也有商業(yè)版可以使用,叫作 QuickBuild,商業(yè)版中包含用戶支持。

          Jetty 不再必需

          Luntbuild 提供了幾種安裝方式。您可能會(huì)發(fā)現(xiàn)最簡(jiǎn)單的方式是通過(guò) GUI 安裝。用 Web 應(yīng)用程序配置和管理 Luntbuild;所以,需要確保正在運(yùn)行一個(gè)能夠處理 JSP 的 Web 服務(wù)器,像 Tomcat 或 Jetty。

          版本控制輪詢

          Luntbuild 提供了對(duì)八種不同版本控制系統(tǒng)的支持,例如 CVS、Subversion、ClearCase 和 Perforce。圖 4 演示了 Luntbuild 被設(shè)置成輪詢 Subversion:


          圖 4. Luntbuild 輪詢 Subversion 存儲(chǔ)庫(kù)
          Luntbuild 輪詢 Subversion 存儲(chǔ)庫(kù)

          執(zhí)行構(gòu)建

          Luntbuild 支持五種不同的構(gòu)建平臺(tái),包括 Ant、Maven、Maven2、命令行和 rake (用來(lái)構(gòu)建 Ruby 應(yīng)用程序)。圖 5 顯示了 Ant 構(gòu)建器的配置頁(yè)面:


          圖 5. 用 Luntbuild 執(zhí)行 Ant 腳本
          用 Luntbuild 執(zhí)行 Ant 腳本

          構(gòu)建安排

          通過(guò)使用 Luntbuild 中的 Schedule 標(biāo)簽(如圖 6 所示),可以設(shè)置 Luntbuild 多久輪詢一次版本控制系統(tǒng)來(lái)獲得修改。在這個(gè)標(biāo)簽上,還可以指定分配給每個(gè)構(gòu)建的唯一構(gòu)建標(biāo)號(hào)。


          圖 6. 在 Luntbuild 中安排構(gòu)建
          在 Luntbuild 中安排構(gòu)建

          在 Luntbuild 中發(fā)布結(jié)果

          配置了項(xiàng)目、版本控制系統(tǒng)適配器、構(gòu)建和計(jì)劃程序之后,就可以指定用戶接收反饋的方式了。但是,Luntbuild 只內(nèi)置了對(duì)電子郵件和即時(shí)消息的支持。另外,可以從 Luntbuild 的主頁(yè)監(jiān)視構(gòu)建,如圖 7 所示:


          圖 7. 從 Luntbuild Web 應(yīng)用程序監(jiān)視構(gòu)建
          從 Luntbuild Web 應(yīng)用程序監(jiān)視構(gòu)建

          Luntbuild 提供了一整套強(qiáng)大的功能,包括管理項(xiàng)目依賴項(xiàng)和大量的版本控制系統(tǒng)適配器。我認(rèn)為工作流和用戶界面可以簡(jiǎn)化,因?yàn)樾枰S多步驟來(lái)設(shè)置和配置工具。





          回頁(yè)首


          CI 記分卡

          在不理解具體需求的情況下,就推薦哪個(gè)工具合適是非常冒失的。每個(gè)服務(wù)器都有許多優(yōu)秀的特性,而且就像我在開始時(shí)所提到的,僅僅因?yàn)槟硞€(gè) CI 服務(wù)器最適合某人,并不意味著它必然滿足您的需求。

          如果尋找的是易于使用的工具,請(qǐng)選擇 Continuum。如果擴(kuò)展性、靈活性和繁榮的用戶社區(qū)對(duì)您很重要,請(qǐng)使用 CruiseControl。如果需要 Web 管理和擴(kuò)展的用戶支持選項(xiàng),請(qǐng)考慮 Luntbuild。圍繞這些服務(wù)器已經(jīng)形成了開發(fā)“生態(tài)”系統(tǒng),所以如果遺漏了某個(gè)特性,一般都會(huì)找到適合需求的擴(kuò)展。

          在表 2 中,是我根據(jù)自己的使用經(jīng)驗(yàn)為所考察的每個(gè) CI 服務(wù)器總結(jié)的特性、可靠性、壽命、目標(biāo)環(huán)境和易用性這五個(gè)核心方面:


          表 2. CI 服務(wù)器五個(gè)核心方面
          特性 可靠性 壽命 目標(biāo)環(huán)境 易用性
          Continuum 支持 Ant、Maven1 和 Maven2,以及 shell。

          使用 XML-RPC 和 SOAP 的遠(yuǎn)程管理能力;支持 Maven2;用戶群;期待未來(lái)有附加的報(bào)告和反饋機(jī)制——不需要修改代碼。
          在 2005 年發(fā)布。期待通過(guò)它與 Apache 的關(guān)系,得到 Continuum 的更多消息。 通過(guò) Apache Maven 的良好用戶社區(qū)支持產(chǎn)品在市場(chǎng)上仍很新。 Linux、Mac OS X、Solaris 和 Win32。 優(yōu)秀的易用性和安裝。
          CruiseControl 許多版本控制集成和擴(kuò)展性。通過(guò) JMX 控制的遠(yuǎn)程訪問(wèn)。多種反饋機(jī)制,包括 RSS、X10、Jabber 以及其他。 在 2001 年發(fā)布。在三個(gè)服務(wù)器中,CruiseControl 在開發(fā)中應(yīng)用得最多。 繁榮的用戶社區(qū);每個(gè)跡象都表示 CruiseControl 還會(huì)存在一段時(shí)間。 Windows 和 Unix;任何能運(yùn)行 Java JVM 的平臺(tái)。 易于安裝。有些人寧愿不修改 XML 配置文件。
          Luntbuild 項(xiàng)目依賴項(xiàng)、標(biāo)號(hào)、安全性組和并行開發(fā)。 在 2004 年發(fā)布。Luntbuild 提供擴(kuò)展的用戶支持選項(xiàng)。 用戶社區(qū)不如 CruiseControl 活躍。 能夠運(yùn)行 JVM 和 servlet 容器的系統(tǒng)。 易于安裝,但用戶界面/工作流需要大大改進(jìn)。基于 Web 的配置(不需要修改配置文件)。

          我在本文中只評(píng)估了三個(gè)服務(wù)器;還有許多服務(wù)器可能更適合您的需求。但是既然您理解了如何挑選 CI 服務(wù)器,那么選擇工作就應(yīng)當(dāng)很容易了。請(qǐng)繼續(xù)關(guān)注下個(gè)月的文章,我將介紹在開發(fā)項(xiàng)目中經(jīng)常會(huì)遇到的構(gòu)建問(wèn)題。



          參考資料

          學(xué)習(xí)

          獲得產(chǎn)品和技術(shù)
          • Continuous Integration Server Feature Matrix:目前市場(chǎng)上的 CI 服務(wù)器以及它們各自特性的對(duì)照表。

          • Continuum:Apache 進(jìn)入 CI 服務(wù)器領(lǐng)域。

          • CruiseControl:免費(fèi)的開源持續(xù)集成服務(wù)器。

          • Luntbuild:另一個(gè)帶有擴(kuò)展商業(yè)支持的持續(xù)集成服務(wù)器。


          討論
          • Improve Your Java Code Quality discussion forum:Andrew Glover 經(jīng)常在 developerWorks 發(fā)表文章,作為專注于改進(jìn)代碼質(zhì)量的顧問(wèn),他將自己的許多專業(yè)意見都帶到了這個(gè)他主持的討論組中。


          關(guān)于作者

          Paul Duvall 是 Stelligent Incorporated 的 CTO,該公司利用有效的開發(fā)人員測(cè)試策略,以及能夠讓團(tuán)隊(duì)盡早盡多地監(jiān)視和提高代碼質(zhì)量的持續(xù)集成技術(shù),幫助其他企業(yè)解決軟件的質(zhì)量問(wèn)題。他還是 UML™ 2 Toolkit 一書的作者之一,目前正在與他人合作撰寫 Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley)


          posted on 2007-04-13 17:52 哼哼 閱讀(647) 評(píng)論(0)  編輯  收藏 所屬分類: CMMI-Common
          主站蜘蛛池模板: 苏尼特右旗| 虹口区| 杭州市| 尤溪县| 大英县| 平山县| 永嘉县| 吴堡县| 太保市| 乌鲁木齐县| 渭南市| 铜梁县| 永仁县| 龙陵县| 文山县| 新津县| 古田县| 大安市| 九龙城区| 科技| 安乡县| 大洼县| 定日县| 无锡市| 岐山县| 漳浦县| 谢通门县| 巩义市| 定日县| 高清| 滕州市| 墨玉县| 兰西县| 建阳市| 黄石市| 安塞县| 景洪市| 施秉县| 三穗县| 县级市| 南涧|