專利名稱::一種軟件持續(xù)集成系統(tǒng)及方法一種軟件持續(xù)集成系統(tǒng)及方法珠術(shù)領(lǐng)域本發(fā)明涉及軟件構(gòu)建,具體涉及一種軟件持續(xù)集成系統(tǒng)及方法。
背景技術(shù):
:持續(xù)集成(CI,ContinuousIntegration)是一種自動化的軟件創(chuàng)建與測試過程,持續(xù)集成過程中,開發(fā)團(tuán)隊可以每天多次構(gòu)建他們的軟件。作為一種軟件實踐,持續(xù)集成讓開發(fā)團(tuán)隊在軟件構(gòu)建時持續(xù)收到反饋并進(jìn)行改進(jìn),而不必等到開發(fā)周期后期才尋找和修復(fù)缺陷。典型的集成過程包括獲取代碼、編譯代碼、測試代碼以及記錄測試結(jié)果等幾個步驟。持續(xù)集成是反復(fù)地進(jìn)行軟件集成的過程,通常使用自動化的集成工具來實現(xiàn)上述步驟。'現(xiàn)有的持續(xù)集成工具如CruiseControl之類的檢査工具運(yùn)行時執(zhí)行預(yù)定義的構(gòu)建腳本,腳本中定義了持續(xù)集成的流程,如從版本控制存儲庫獲取最新代碼,然后進(jìn)行代碼編譯、代碼測試以及測試結(jié)果記錄,最后通過郵件等方式通知用戶。版本控制存儲庫用于集中存放軟件的所有代碼,如微軟的VisualSourceSafe工具,它是集成工具所需要的代碼來源。版本控制,就是通過版本控制庫記錄程序各個模組的改動,并為每次改動編上序號,例如,某軟件的1.0版本、1.1版本等代碼都存放在控制庫中,可以根據(jù)版本序號方便的獲得歷史上任何一個版本的代碼。但是,現(xiàn)有的持續(xù)集成系統(tǒng)運(yùn)行時,持續(xù)集成失敗的結(jié)果數(shù)據(jù)通常存放在同一個文件中,也就是構(gòu)建結(jié)果文件,這個文件通常包含了軟件代碼中所有失敗的代碼信息,從這個文件中只能了解到整個項目是構(gòu)建成功還是構(gòu)建失敗,而無法知道每個錯誤信息歸屬于哪一個開發(fā)者。一種解決方法是由版本管理員手工進(jìn)入版本控制存儲庫,査詢每個錯誤文件對應(yīng)的開發(fā)者,然后通知開發(fā)者修改代碼。若構(gòu)建結(jié)果存在大量的錯誤,則此種人工分析集成結(jié)果文件的方式需要耗費(fèi)大量的人力成本。另一種常用的解決方法是郵件通知方式,通常是將構(gòu)建結(jié)果發(fā)給項目組所有開發(fā)人員,郵件中攜帶著同樣的構(gòu)建結(jié)果文件,開發(fā)人員需要人工閱讀構(gòu)建結(jié)果文件,從中找出屬于自己的代碼錯誤,然后進(jìn)行代碼修改。此種方式需要耗費(fèi)每個開發(fā)人員大量的時間閱讀和自己無關(guān)的代碼錯誤信息,同時也很難判斷某個出錯代碼文件是否屬于自己。比如,一個軟件構(gòu)建項目有3個開發(fā)人員A、B、C,軟件集成后,屬于開發(fā)人員A的文件1和屬于開發(fā)人員B的文件2發(fā)生了錯誤,現(xiàn)有持續(xù)集成工具會把這兩個錯誤都發(fā)給項目中的3個人,A、B、C都需要閱讀這2個文件的錯誤并人工分析出屬于自己的錯誤,導(dǎo)致耗費(fèi)很多不必要的人力,且效率低。
發(fā)明內(nèi)容,本發(fā)明的主要目的就是解決現(xiàn)有技術(shù)中的問題,提供一種軟件持續(xù)集成系統(tǒng)及方法,能使開發(fā)人員只看到與自己相關(guān)的構(gòu)建錯誤信息,.大大提高軟件構(gòu)建效率。為實現(xiàn)上述目的,本發(fā)明提供一種軟件持續(xù)集成系統(tǒng),包括構(gòu)建控制器,用于控制執(zhí)行腳本文件中定義的軟件構(gòu)建任務(wù);日志分析器,用于解析構(gòu)建日志文件以提取構(gòu)建錯誤信息;版本控制庫,用于存放軟件構(gòu)建的更新內(nèi)容;版本控制庫接口,用于提供將所述版本控制庫中的構(gòu)建錯誤信息的所有者信息送至所述構(gòu)建控制器的通道;所述軟件構(gòu)建任務(wù)包括從所述版本控制庫獲取代碼、編譯代碼、運(yùn)行測試、生成記錄編譯及測試結(jié)果的日志文件、通過所述日志分析器提取構(gòu)建錯誤信息以及通過所述版本控制庫接口査詢構(gòu)建錯誤信息的所有者信息。還包括分類存儲模塊,用于按照所有者分類存儲構(gòu)建錯誤信息。還包括定向發(fā)送模塊,用于將構(gòu)建錯誤信息發(fā)往其所有者的信息接收端o所述定向發(fā)送模塊為電子郵件發(fā)送模塊或即時通訊模塊。所述日志分析器包括分析單元和更新接口單元,所述分析單元用于從構(gòu)建日志文件中抽取出構(gòu)建錯誤信息,所述更新接口單元用于對構(gòu)成分析單元的實現(xiàn)模塊進(jìn)行更新,所述實現(xiàn)模塊決定所述分析單元所能處理的日志文件的類型。為實現(xiàn)上述目的,本發(fā)明還提供一種軟件持續(xù)集成系統(tǒng),包括以下步驟Al、運(yùn)行系統(tǒng),加載腳本文件并提取其中定義好的構(gòu)建任務(wù);Bl、執(zhí)行編譯任務(wù),對版本控制庫中的更新內(nèi)容進(jìn)行編譯,并將編譯結(jié)果記錄在日志文件中;.Cl、執(zhí)行測試任務(wù),對版本控制庫中的更新內(nèi)容進(jìn)行測試,并將測試結(jié)果記錄在日志文件中;Dl、執(zhí)行日志文件解析任務(wù),提取日志文件中的構(gòu)建錯誤信息;El、執(zhí)行査詢?nèi)蝿?wù),從版本控制庫中査詢出構(gòu)建錯誤信息的所有者信息。所述步驟El后還包括以下步驟Fl、執(zhí)行存儲任務(wù),將構(gòu)建錯誤信息按其所有者分類存儲。所述步驟El后還包括以下步驟Gl、執(zhí)行定向.發(fā)送任務(wù),將構(gòu)建錯誤信息發(fā)送至其所有者的信息接收端。'所述步驟D1中,從日志文件解析出編譯錯誤信息-文件名、測試錯誤信息-文件名映射關(guān)系數(shù)據(jù);所述步驟E1中,根據(jù)所述文件名從版本控制庫提取出文件名_用戶名映射關(guān)系數(shù)據(jù)。所述步驟G1包括以下子步驟Gl1、加載含有用戶名_電子郵件地址映射關(guān)系數(shù)據(jù)的郵件信息定義文件;G12、從所述郵件信息定義文件獲取所述文件名-用戶名映射關(guān)系數(shù)據(jù)中的用戶名所對應(yīng)的電子郵件地址;G13、根據(jù)所述編譯錯誤信息-文件名、測試錯誤信息-文件名映射關(guān)系數(shù)據(jù)獲取文件名對應(yīng)的錯誤信息;'G14、將所述錯誤內(nèi)容信息以電子郵件形式送往其對應(yīng)的電子郵件地址。本發(fā)明的有益效果是本發(fā)明的持續(xù)集成系統(tǒng)較現(xiàn)有技術(shù)增加了日志分析器和版本控制庫接口,其中,日志分析器負(fù)責(zé)解析并提取出構(gòu)建日志文件中的構(gòu)建錯誤信息,版本控制庫接口則提供將構(gòu)建錯誤信息的所有者信息送至構(gòu)建控制器的通道,這樣,在持續(xù)集成過程中,構(gòu)建控制器在執(zhí)行了更新代碼的編譯、測試,生成記錄結(jié)果的日志文件的任務(wù)后,調(diào)用由日志分析器和版本控制庫接口定義于腳本文件中的任務(wù),就能生成構(gòu)建錯誤信息和其所有者的對應(yīng)數(shù)據(jù)。進(jìn)一步地,增加分類存儲模塊,可將該映射關(guān)系數(shù)據(jù)按照所有者分類存儲于對應(yīng)的存儲空間,增加定向發(fā)送模塊例如電子郵件發(fā)送模塊,可將相應(yīng)的構(gòu)建錯誤信息發(fā)送至其所有者的信息接收端,對于后者,還能批量發(fā)送構(gòu)建錯誤信息至不同郵件地址。構(gòu)建錯誤信息按照所有者分類發(fā)6送或保存,使每個開發(fā)人員都能濾掉無關(guān)信息而只看到和自己相關(guān)的錯誤信息,避免花大量賴力處理無關(guān)的錯誤信息,同時,也不再需要配置管理員及開發(fā)人員人工去分析構(gòu)建結(jié)果,將人工解決方式變?yōu)樽詣踊绞剑罅抗?jié)約人力,提高軟件生產(chǎn)效率,降低軟件項目的成本。圖1為本發(fā)明的持續(xù)集成系統(tǒng)一種實施例的結(jié)構(gòu)示意圖;圖2為本發(fā)明的持續(xù)集成系方法一種實施例的執(zhí)行流程圖。本發(fā)明的特征及優(yōu)點將通過實施例結(jié)合附圖進(jìn)行詳細(xì)說明。具體實施方式請參考圖l,本實施例的持續(xù)集成系統(tǒng)包括構(gòu)建控制器、日志分析器、版本控制庫接口以及版本控制庫等幾個模塊,各模塊的構(gòu)成及功能如下構(gòu)建控制器,,用于控制執(zhí)行腳本文件中定義的構(gòu)建任務(wù),本實施例采用Ant控制器。Ant(AnotherNestTool)是基于Java(—種跨平臺的面向?qū)ο缶幊陶Z言)的構(gòu)建工具,可以完成不同的構(gòu)建功能,Ant工具的核心即Ant控制器。Ant通過一系列的任務(wù)(Task)實現(xiàn)構(gòu)建過程,由Ant控制器負(fù)責(zé)執(zhí)行任務(wù),因此先要對以上其它模塊功能以任務(wù)的方式進(jìn)行定義。所謂任務(wù)是獨(dú)立的功能單元,例如版本代碼獲取的任務(wù)、編譯Java代碼、Jsp代碼的任務(wù)、發(fā)送Email的任務(wù)等。定義好的任務(wù)存放在Ant腳本文件(Ant腳本文件是定義執(zhí)行流程的xml文件)中,系統(tǒng)運(yùn)行時,Ant控制器可對Ant腳本文件進(jìn)行解析并調(diào)用和執(zhí)行這些任務(wù)。本實施例中的構(gòu)建任務(wù)包括從版本控制庫獲取代碼、編譯代碼、運(yùn)行測試、生成記錄編譯及測試結(jié)'果的日志文件、通過日志分析器提取構(gòu)建錯誤信息以及通過版本控制庫接口査詢構(gòu)建錯誤信息的所有者信息等(Ant控制器屬于ApacheAnt的內(nèi)容可以參考Ant的網(wǎng)站(http:〃ant.apache,org)。日志分析器,用于解析構(gòu)建日志文件以提取構(gòu)建錯誤信息。本實施例的日志分析器是編譯、測試結(jié)果記錄日志的執(zhí)行模塊,可解析Java、JSP(JavaServerPages,—種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn))、Junit單元等代碼構(gòu)建及測試的日志記錄,并進(jìn)行信息抽取,提取出代碼文件名、錯誤詳情等各類信息。日志分析器對外提供軟件接口,接口中定義了程序之間的連接規(guī)范。優(yōu)選的,本實施例的日志分析器又包括分析單元與更新接口單元,分析單元負(fù)責(zé)從構(gòu)建日志文件中抽取出構(gòu)建錯誤信息,更新接口單元用于對構(gòu)成分析單元的實現(xiàn)模塊進(jìn)行更新,實現(xiàn)模塊決定分析單元所能處理的日志文件的類型。通過更新接口單元,日志分析器能通過新的實現(xiàn)模塊例如第三方自行開發(fā)符合接口規(guī)范的實現(xiàn)模塊對分析單元進(jìn)行更新,這樣就能夠調(diào)用新模塊的功能來處理新的類型的日志文件,從而達(dá)到支持以多種編程語言構(gòu)建所產(chǎn)生的不同日志文件的目的。版本控制庫,'用于存放軟件構(gòu)建的更新內(nèi)容,包括持續(xù)集成中所有的更新代碼及相關(guān)信息如其所有者的名稱等,本實施例采用ClearCase配置庫。ClearCase作為軟件配置工具,可以管理代碼的任何更改。軟件配置管理(SoftwareConfigurationManagement,SCM)應(yīng)用于整個軟件工程過程,是標(biāo)識、組織和控制修改的技術(shù)。軟件構(gòu)建,時變更是不可避免的,SCM的目標(biāo)就是為了標(biāo)識、控制變更、確保變更正確實現(xiàn)并向其他有關(guān)人員報告變更。ClearCase配置庫的核心功能即軟件的版本控制。版本控制庫接口,提供將版本控制庫中的構(gòu)建錯誤信息的所有者信息送至構(gòu)建控制器的通道,負(fù)責(zé)構(gòu)建控制器和版本控制庫進(jìn)行交互,本實施例的版本控制庫接口為ClearCase接口模塊。Ant控制器可通過ClearCase接口模塊調(diào)用ClearCase配置庫提供的部分功能,例如根據(jù)文件名獲得文件的所有者信息。通過調(diào)用執(zhí)行由ClearCase接口模塊定義的任務(wù),可以精確地得知某個錯誤詳情是歸屬于哪個開發(fā)者。定向發(fā)送模塊,用于將構(gòu)建錯誤信息發(fā)往其所有者的信息接收端。本實施優(yōu)選采用郵件發(fā)送模塊,郵件發(fā)送模塊連接至電子郵件服務(wù)器,負(fù)責(zé)實現(xiàn)電子郵件的發(fā)送功能,發(fā)送的電子郵件地址也就是構(gòu)建錯誤信息的所有者的信息接收端,而各電子郵件的正文僅包含與收件人相關(guān)的錯誤信息。郵件發(fā)送模塊的發(fā)送功能作為任務(wù)定義在Ant腳本文件中,供Ant控制器解析調(diào)用。本實施例中的日志分析器、ClearCase接口模塊由于功能聯(lián)系緊密,因此集成在一起成為一個任務(wù),命名為CICmdTask,而郵件發(fā)送模塊作為一+任務(wù),命名為CIMailTask。在另一種實施例中,定向發(fā)送模塊也可由分類存儲模塊替代,分類存儲模塊提供了按照用戶特征如用戶名劃分的存儲空間,這樣,當(dāng)生成了構(gòu)建錯誤信息時,Ant控制器解析調(diào)用由分類存儲模塊的功能所定義的任務(wù),將相應(yīng)的構(gòu)建錯誤信息存放至屬于相關(guān)用戶的存儲空間中,方便用戶査詢及下載。此時,為用戶劃分的存儲空間就是構(gòu)建錯誤信息的所有者的信息接收端。請參考圖2,本發(fā)明持續(xù)集成方法的一種實施例按照以下步驟進(jìn)行1.開發(fā)人員通過命令行方式運(yùn)行持續(xù)集成系統(tǒng)。2.Ant控制器加載Ant腳本文件,并開始執(zhí)行構(gòu)建任務(wù)。Ant控制器首先從ClearCase配置庫中獲取最新的項目代碼如Java、JSP等代碼文件進(jìn)行編譯,并將編譯結(jié)果記錄在日志文件中。其中,Ant腳本文件中的任務(wù)執(zhí)行流程定義如下〈targetname二〃main〃'descriptionAnt主流禾呈〃〉〈antcalltarget=〃init'7>〈!一控制器初始化--〉〈antcalltarget=〃cc—update7〉〈!一獲取最新代碼--〉<antcalltarget="compilejava7〉〈!一編譯Java代石馬--〉<antcalltarget="compilejsp7〉<!—編譯Jsp代石馬一>〈antcalltarget=〃unittest'7><!—執(zhí)行單元測試--〉<antcalltarget=〃getccuser7>〈!一調(diào)用CICmdTask-->〈antcalltarget=〃mail'7〉〈!一調(diào)用CIMailTask—><antcalltarget=〃end"/>〈!一執(zhí)行結(jié)束--></target>編譯是把用高級語言編寫的面向過程的源程序翻譯成目標(biāo)程序的語言處理程序,就Java來說是把.Java文件轉(zhuǎn)換為.class文件的過程。本實施例以編譯一段Java代碼為例,并假定編譯之后的日志文件的內(nèi)容如下Copying47filestoE:\cc\build\classes[javac]Compiling777sourcefilestoE:\cc\liuyf—SIMF—NF—int\SIMF—CV0B\build2\classesE:\cc\src\UserAction.java:49:setAttribute(java.lang.String,java.lang.Object)injavelx.servlet.ServletRequestcannotbeappliedto(java.lang.String,com.ms.util.IExtensionRender,int)request.setAttribute.("time",time,12);AE:\cc\src\DeptAction.java:49:,i國isetAttribute(Java,lang.String,Java.lang.Object)injavdx.servlet.ServletRequestcannotbeappliedto(Java.lang.String,com..ms.util.IExtensionRender,int)[javac]request.setAttribute("render",render,99);A[javac]2errorCompilefailed;seethecompilererroroutputfordetails.3.Ant控制器調(diào)用Junit單元測試任務(wù),運(yùn)行Junit測試,并將測試縛果記錄在日志文件中。4.Ant控制器調(diào)用執(zhí)行CICmdTask任務(wù),先調(diào)用CICmdTask的日志分析器模塊,日志分析器模塊解析Java、JSP、Jimit等日志文件,提取出代碼編譯錯誤、測試錯誤等錯誤信息與文件名的對應(yīng)數(shù)據(jù)列表。如針對前面的步驟2的Java日志文件,經(jīng)過日志分析器模塊解析后的錯誤信息-文件名映射關(guān)系M1如下表表l錯誤信息文件名,E:\cc\src\UserAction.java:49:setAttribute(java.lang.Stringjava.lang.Object)injkvax.servlet.ServletRequestcannotbeappliedto(java.lang.String,com.ms.util.IExtensionRender,int)[javac]request.setAttribute("time",time,12);[javac]'AE:\cc\src\UserAction.javaE:\cc\src\DeptAc^ion.java:49:setAttribute(jav^.lang.String;java.lang.Object)inj,vax.servlet.ServletRequestcannotbeappliedto(java.lang.String,com..ms.util.IExtensionRender,int)E:\cc\src\DeptAction.java<table>tableseeoriginaldocumentpage11</column></row><table>5.接下來調(diào)用CICmdTask中ClearCase接口模塊,連接ClearCase版本控制庫。首先輸入文件名列表信息參數(shù),査詢出錯誤文件的所有者,返回錯誤文件列表對應(yīng)的用戶列表。例如,根據(jù)步驟4提取出的文件列表,經(jīng)過査詢后的文件名-用戶名的映射關(guān)系M2如下表表2<table>tableseeoriginaldocumentpage11</column></row><table>6.先由Ant控制器調(diào)用CIMailTask即郵件發(fā)送模塊,將上述映射關(guān)系M1、M2的數(shù)據(jù)傳遞給郵件發(fā)送模塊;接下來,郵件發(fā)送模塊加載郵件信息定義文件,從郵件信息定義文件得到映射關(guān)系M2中用戶名所對應(yīng)的Email地址;其中,郵件信息定義文件包含了用戶名以及用戶名對應(yīng)的郵件地址信息,對于本例如下所示<table>tableseeoriginaldocumentpage11</column></row><table>然后,根據(jù)映射關(guān)系M1的數(shù)據(jù)得到文件名對應(yīng)的錯誤信息;最后,將錯誤信息以電子郵件形式送往其對應(yīng)的電子郵件地址。每封郵件所包含的錯誤信息與郵件的收件人地址相對應(yīng)。本例發(fā)送的郵件為兩封,其內(nèi)容分別如下郵件l:<table>tableseeoriginaldocumentpage11</column></row><table>(java.lang.String,com.ms,util.IExtensionRender,int)[javac]request.setAttribute("time",time,12);[javac]A.郵件2:郵件接收人Emailjack.wang@mail.com郵件主題E:\cc\src\UserAction.java文件出錯郵件內(nèi)容setAttribute(java.lang.Stringjava.lang.Object)injavax.servlet.ServletRequestcannotbeappliedto(java.lang.String,com..ms.util,IExtensionRender,int)廿avac]request.setAttribute("render",render,99);[javac]A本實施例中的Ant工具是基于Java的,因此只能構(gòu)建基于Java的內(nèi)容;但是就本發(fā)明而言,Ant工具也可以換為有同樣功能的支持其他語言的工具,如Nant,即能構(gòu)建基于.Net程序的內(nèi)容。此外,本實施例中的ClearCase是一種版本控制存儲庫工具,對于本發(fā)明,還可以以實現(xiàn)相同功能的其他版本控制庫替代本實施例的ClearCase配置庫,同時,ClearCase接口模塊也可以替換為其它版本控制工具的接口模塊,如微軟的VisualSourceSafe版本控制接口模塊等。本發(fā)明引入了'日志分析器與版本控制庫接口模塊,其中,日志分析器實現(xiàn)了日志數(shù)據(jù)的抽取功能,版本控制庫解決了獲得構(gòu)建錯誤內(nèi)容所有者信息的問題,增加郵件發(fā)送模塊,能將提取出的不同用戶的構(gòu)建錯誤內(nèi)容作為電子郵件發(fā)往不同用戶的電子郵件地址,因此,本發(fā)明能夠?qū)崿F(xiàn)定向通知方式的持續(xù)集成,解決了現(xiàn)有的軟件持續(xù)集成工具采用的通知方式效率低的缺點。由于本發(fā)明只通知與錯誤內(nèi)容相關(guān)的開發(fā)人員而不是全部人員,使每個開發(fā)人員過濾掉無關(guān)信息而只看到和自己相關(guān)的錯誤信息,不再需要配置管理員及開發(fā)人員人工分析構(gòu)建結(jié)果,最終將人工解決方式變?yōu)樽詣踊绞?,?jié)約人力,從而提高了軟件構(gòu)建效率,降低了軟件項目的生產(chǎn)成本。仍以舉
背景技術(shù):
中例子為例,使用本發(fā)明可實現(xiàn)只將文件1的錯誤發(fā)給人員A,文件2的錯誤發(fā)給人員B,而人員C不收到任何通知。以上內(nèi)容是結(jié)合具體的優(yōu)選實施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實施只局限于這些說明,例如,本發(fā)明所指的構(gòu)建錯誤信息的所有者,既可以是其開發(fā)者,也可以是與該信息存在特定關(guān)聯(lián)的其他人員。.對于本發(fā)明所屬
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。權(quán)利要求1.一種軟件持續(xù)集成系統(tǒng),其特征在于包括構(gòu)建控制器,用于控制執(zhí)行腳本文件中定義的軟件構(gòu)建任務(wù);日志分析器,用于解析構(gòu)建日志文件以提取構(gòu)建錯誤信息;版本控制庫,用于存放軟件構(gòu)建的更新內(nèi)容;版本控制庫接口,用于提供將所述版本控制庫中的構(gòu)建錯誤信息的所有者信息送至所述構(gòu)建控制器的通道;所述軟件構(gòu)建任務(wù)包括從所述版本控制庫獲取代碼、編譯代碼、運(yùn)行測試、生成記錄編譯及測試結(jié)果的日志文件、通過所述日志分析器提取構(gòu)建錯誤信息以及通過所述版本控制庫接口查詢構(gòu)建錯誤信息的所有者信息。2.如權(quán)利要求1所述的持續(xù)集成系統(tǒng),其特征在于還包括分類存儲模塊,用于按照所有者分類存儲構(gòu)建錯誤信息。3.如權(quán)利要求1所述的持續(xù)集成系統(tǒng),其特征在于還包括定向發(fā)送模塊,用于將構(gòu)建錯誤信息發(fā)往其所有者的信息接收端。4.如權(quán)利要求3所述的持續(xù)集成系統(tǒng),所述定向發(fā)送模塊為電子郵件發(fā)送模塊或即時通訊模塊。5.如權(quán)利要求1至4任意一項所述的持續(xù)集成系統(tǒng),其特征在于所述日志分析器包括分析單元和更新接口單元,所述分析單元用于從構(gòu)建日志文件中抽取出構(gòu)建錯誤信息,所述更新接口單元用于對構(gòu)成分析單元的實現(xiàn)模塊進(jìn)行更新,所述實現(xiàn)模塊決定所述分析單元所能處理的日志文件的類型。6.—種實現(xiàn)軟件構(gòu)建的持續(xù)集成方法,其特征在于包括以下步驟Al、運(yùn)行系統(tǒng),加載腳本文件并提取其中定義好的構(gòu)建任務(wù);Bl、執(zhí)行編譯任務(wù),對版本控制庫中的更新內(nèi)容進(jìn)行編譯,并將編譯結(jié)果記錄在日志文件中;Cl、執(zhí)行測試任務(wù),對版本控制庫中的更新內(nèi)容進(jìn)行測試,并將測試結(jié)果記錄在日志文件中;'D1、執(zhí)行日志文件解析任務(wù),提取日志文件中的構(gòu)建錯誤信息;El、執(zhí)行査詢?nèi)蝿?wù),從版本控制庫中査詢出構(gòu)建錯誤信息的所有者信息。7.如權(quán)利琴求6所述的持續(xù)集成方法,其特征在于所述步驟E1后還包括以下步驟'F1、執(zhí)行存儲任務(wù),將構(gòu)建錯誤信息按其所有者分類存儲。8.如權(quán)利要求6所述的持續(xù)集成方法,其特征在于所述步驟El后還包括以下步驟Gl、執(zhí)行定向發(fā)送任務(wù),將構(gòu)建錯誤信息發(fā)送至其所有者的信息接收^山頓。9.如權(quán)利要求8所述的持續(xù)集成方法,其特征在于所述步驟Dl中,從日志文件解析出編譯錯誤信息-文件名、測試錯誤信息-文件名映射關(guān)系數(shù)據(jù);所述步驟E1中,根據(jù)所述文件名從版本控制庫提取出文件名-用戶名映射關(guān)系數(shù)據(jù)。10.如權(quán)利要求9所述的持續(xù)集成方法,其特征在于所述步驟G1包括以下子步驟Gl1、加載含有用戶名_電子郵件地址映射關(guān)系數(shù)據(jù)的郵件信息定義文件;G12、從所述郵件信息定義文件獲取所述文件名-用戶名映射關(guān)系數(shù)據(jù)中的用戶名所對應(yīng)的電子郵件地址;G13、根據(jù)所述編譯錯誤信息-文件名、測試錯誤信息-文件名映射關(guān)系數(shù)據(jù)獲取文件名對應(yīng)的錯誤信息;G14、將所述錯誤內(nèi)容信息以電子郵件形式送往其對應(yīng)的電子郵件地址。.全文摘要本發(fā)明公開了一種軟件持續(xù)集成系統(tǒng),包括控制執(zhí)行腳本文件中定義的構(gòu)建任務(wù)的構(gòu)建控制器;解析構(gòu)建日志文件以提取構(gòu)建錯誤信息的日志分析器;存放軟件構(gòu)建的更新內(nèi)容的版本控制庫;版本控制庫接口,用于提供將版本控制庫中的構(gòu)建錯誤信息的所有者信息送至構(gòu)建控制器的通道;定向發(fā)送模塊,用于將構(gòu)建錯誤信息發(fā)往其所有者的信息接收端。本發(fā)明還公開了一種實現(xiàn)軟件構(gòu)建的持續(xù)集成方法。使用本發(fā)明,能方便軟件持續(xù)集成的開發(fā)人員查看、接收與己相關(guān)的構(gòu)建錯誤信息,過濾大量無關(guān)信息,從而大大提高軟件構(gòu)建效率。文檔編號G06F9/44GK101515232SQ200810065388公開日2009年8月26日申請日期2008年2月21日優(yōu)先權(quán)日2008年2月21日發(fā)明者劉玉鋒申請人:卓望數(shù)碼技術(shù)(深圳)有限公司