每日構建方法和裝置的製作方法
2023-05-26 20:16:26
專利名稱:每日構建方法和裝置的製作方法
技術領域:
本發明涉及軟體技術領域,尤其涉及一種每日構建方法和裝置。
背景技術:
每曰構建也稱為定時構造或持續集成,包括編譯集成、代碼規範檢查和 單元測試等。
每曰構建是一種控制版本質量的重要手段,要實現儘快對版本代碼變動 做出反應,每日構建的效率至關重要。提高每日構建的效率的一個重要途徑 是提高每日構建的自動化程度,包括代碼的收集,下載,編譯,檢查以及編 譯檢查結果的處理等,都應該自動高效的完成。
每曰構建系統包括代碼伺服器,構建伺服器,測試伺服器,以及資料庫。 程式設計師將代碼的新版本放入代碼伺服器,並向構建伺服器下發控制指令,指 示構建伺服器對新版本的代碼進行編譯集成。
在上述使用每日構建編譯集成代碼的過程中,存在如下問題
如果構建伺服器當前正在編譯集成代碼,此時,該構建伺服器無法對其 他代碼進行編譯集成,當開發人員眾多,版本複雜,代碼量大,代碼變更頻 繁時,構建伺服器無法滿足編譯大量代碼的編譯需求。
發明內容
本發明提供了 一種每日構建方法和裝置,解決了構建伺服器無法滿足編 譯大量代碼的編譯需求的問題。
一種每日構建方法,包^::
在預置的構建時間,自動下載版本代碼;在下載代碼完成後,對所述版本代碼進行編-澤和^f企查,生成構建日誌文件。
進一步的,所述在預置的構建時間,自動下載版本代碼的步驟之前,還
包括
;險查代碼的完整性,如果所述代碼不完整,則結束每日構建。
進一步的,所述在下載代碼完成後,對所述版本代碼進行編譯和檢查,
生成構建日誌文件的步驟之後,還包括
在所述構建日誌文件中查找關鍵字,分析抽取構建信息。
進一步的,所述構建日誌文件包括編譯日誌和檢查日誌,在所述構建日 志文件中查找關鍵字,分析抽取構建信息包括
根據告警關鍵字,從編譯日誌中抽取編譯告警信息,根據該編譯告警信 息生成告警郵件,發送並備份所述告警郵件;和,
根據告警關鍵字,從檢查日誌中抽取告警信息,根據該告警信息生成生 成告警郵件,發送並備份所述告警郵件。
進一步的,所述在下栽代碼完成後,對所述版本代碼進行編譯和檢查, 生成構建日誌文件的步驟之後,還包括
檢查代碼編譯是否成功;
如果代碼編譯成功,對該代碼進行備份;或,
如果代碼編譯失敗,結束每日構建。
進一步的,所述如果代碼編譯成功,對該代碼進行備份包括 生成版本備份目錄,記錄每日構建的時間; 將所述代碼拷貝到所述版本備份目錄下打包備份。
一種每日構建裝置,包括
代碼下載模塊,用於根據預置的編譯周期,自動下載版本代碼; 編譯和檢查模塊,用於在下載代碼完成後,對所述代碼進行編譯和檢查,
5生成構建日誌文件。
進一步的,上述每日構建裝置還包括
完整性檢查模塊,用於檢查代碼的完整性,如果所述代碼不完整,則結 束每日構建。
進一步的,上述每日構建裝置還包括
曰志分析模塊,用於在所述構建日誌文件中查找關鍵字,分析抽取構建
信息;
編譯結果檢查模塊,用於檢查代碼編譯是否成功,在代碼編譯成功時對 該代碼進行備份,或在代碼編譯失敗時結束每日構建。
進一步的,該每日構建裝置集成於構建伺服器或個人終端中。
本發明的實施例提供了 一種每日構建方法和裝置,在預置的構建時間, 自動下載版本代碼,並對所述版本代碼進行編譯和檢查,生成構建日誌文件, 實現了同時對多組代碼的集成編譯,提高了編譯效率,解決了構建伺服器無 法滿足編譯大量代碼的編譯需求的問題。
圖1為本發明的實施例提供的一種每日構建方法的流程圖2為本發明的實施例提供的一種每日構建裝置的結構示意圖3為本發明的又一實施例提供的一種每日構建裝置的結構示意圖4為本發明的又一實施例提供的一種每日構建裝置的結構示意圖。
具體實施例方式
當開發人員眾多(比如說一個軟體的開發人員有幾百人),個人獲取構 建伺服器控制權的機會就會大大減少;軟體代碼量大,每次編譯時間都很長, 一個人佔用構建伺服器的時候,下一個人要等很長時間才能使用到構建伺服器。這將影響到開發進度。本發明的實施例提供了一種每日構建方法,提高 了構建伺服器的集成編譯效率,該方法可以通過構建伺服器來實現,也可以 通過個人終端,如PC來實現。本發明的實施例以構建伺服器為例,使用該
方法完成每日構建的流程如圖1所示,包括 步驟IOI、檢查代碼的完整性;
代碼可以只存儲在一個代碼伺服器且只在該代碼伺服器上有一份拷貝, 也可以存在多個代碼伺服器和版本拷貝。可以設定一個頂層代碼伺服器用於 開發人員合入代碼,設置多個代碼伺服器從頂層代碼伺服器中下載版本,提 供給更多的構建伺服器下載代碼。
本發明實施例中,在代碼伺服器從頂層代碼伺服器拷貝前設定一個環境 變量,拷貝結束後改變這個環境變量的值。例如,設備環境變量VER_ID, 當代碼伺服器從上層伺服器上下載代碼的時候,VER—ID的值為READY, 當它下載完後,VER—ID的值變為OK。
本步驟中,構建伺服器通過檢查這個環境變量的值判斷代碼伺服器上的 代碼是否完整;如果代碼不完整,則結束每日構建;如果代碼完整,則進入 步驟102。
步驟102、在預置的構建時間,自動下載版本代碼;
本發明實施例中,為每日構建預置一個構建時間,構建時間可以是一個 時間點,如上午9點,也可以是一個時間周期。
本步驟中,構建伺服器從代碼伺服器上下載新的版本代碼。
版本代碼包含多個模塊,可以將更新後的各個模塊存儲在代碼伺服器 上,構建伺服器下載時,將版本代碼作為一個整體進行下載。
步驟103、在下載代碼完成後,對所述版本代碼進行編譯和檢查,生成 構建日誌文件;
本步驟中,根據版本設置編譯環境(不同版本可能依賴的硬體平臺,編 譯器以及相關設置會有不同,再加應用於不同產品,配置也會有不同)。配 置完成後,構建伺服器執行預先設定的編譯命令,編譯代碼,編譯信息輸出 到編譯日誌文件。在編譯的同時,構建伺服器要對所述版本代碼進行檢查,主要是使用代
碼靜態檢查工具對代碼進行檢查。本發明實施例以使用pclint工具為例,根 據制定的編程規範配置pclint檢查項,檢查代碼中是否有不符合編程規範的 地方,將產生的檢查信息輸出到檢查日誌文件中。
步驟104、在所述構建日誌文件中查找關鍵字,分析抽取構建信息;
本發明實施例中,構建日誌文件具體包括步驟103輸出的編譯日誌文件 和檢查日誌文件,現分別對分析兩種構建日誌的過程進行說明。
對編譯日誌文件的分析又包括編譯告警分析統計和編譯錯誤分析。
編譯告警分析統計即從編譯日誌文件中抽取告警信息,將構建版本信息 寫入郵件名,將告警文件名以及告警個數寫入郵件正文,同時生成郵件正文 的文本文件,具體的告警信息寫入郵件附件,調用郵件工具自動將郵件發送 給責任人,記錄被發送的郵件正文對應的文本文件名,作為郵件發送記錄; 從當天或者歷史的郵件發送記錄中找到郵件正文,讀取對應代碼文件告警數
量,根據代碼文件所屬開發小組統計各小組負責文件的告警情況;備份郵件 正文和郵件發送記錄,做告警統計資料。
編譯錯誤分析即從編譯日誌中抽取編譯錯誤信息,具體的可以按照編譯 錯誤相關的關鍵字來搜索錯誤信息。不同的編譯器報錯關鍵字會有不同,在 此不作詳述。將構建版本信息寫入郵件名,發生編譯錯誤的文件名寫入郵件 正文,詳細的編譯錯誤信息寫入郵件附件,調用郵件工具,將郵件自動發送 給責任人。
對檢查日誌文件的分析包括從日誌文件中抽取代碼違反編程規範的信 息,具體地可以查找某些關鍵字,關鍵字和檢查工具相關,如pclint工具中 使用"error" 、 "warning"或者"info"等關鍵字。將構建版本信息寫入郵 件名,將告警文件名和告警數量寫入郵件正文,同時生成郵件正文的文本文 件,將文件的詳細檢查信息寫入郵件附件,調用郵件工具,將郵件自動發送 給責任人;將郵件正文名作為郵件發送記錄。從郵件發送記錄可以找到郵件 正文,讀取檢查告警數量,根據文件所屬開發小組統計各組一段時間或者指 定時間段內的檢查情況,統計結果發給相關責任人。步驟105、檢查代碼編譯是否成功;
本發明實施例中,對代碼編譯成功後會生成最終的執行文件,通過檢查 這些執行文件是否存在以及生成時間,可以判斷編i奪是否成功。
如果編譯失敗,則結束每日構建;如果編譯成功,則需要備份該代碼, 進入步驟106。
步驟106、對編譯成功的代碼進行備份;
本步驟中,構建伺服器在集成編譯成功後,對相應的代碼進行備份,具 體為
首先自動生成備份目錄,可以用編譯成功時間估文目錄名,以區分不同時 間構建成功的版本;然後將代碼拷貝到備份目錄打包。
上述流程中的各項功能可以通過批處理和perl語言實現,便於維護。
本發明的實施例提供的每日構建方法,設置了構建時間,並在預置的構 建時間,由構建伺服器自動下載版本代碼,並對所述版本代碼進行編譯和檢 查,生成構建日誌文件,實現了同時對多組代碼的集成編譯,提高了編譯效 率,解決了構建伺服器無法滿足編譯大量代碼的編譯需求的問題;在生成構 建曰志文件後,對構建日誌文件進行分析,將告警信息通知給技術人員,實 現了對軟體問題的快速定位和響應;且對構建日誌中的告警信息進行統計, 為系統性能分析提供了資料。此外,本發明實施例提供的每日構建方法,還 可以應用在PC上,降低了每日構建的成本。
本發明的實施例還提供了一種每日構建裝置,該裝置如圖2所示,包括
代碼下載模塊201,用於根據預置的編譯周期,自動下載版本代碼;
編譯和檢查模塊202,用於在下載代碼完成後,對所述代碼進行編譯和 檢查,生成構建日誌文件。
進一步的,該每日構建裝置如圖3所示,還包括
完整性檢查模塊203,用於檢查代碼的完整性,如果所述代碼不完整, 則結束每日構建。進一步的,該每日構建裝置如圖4所示,還包括
日誌分析模塊204,用於在所述構建日誌文件中查找關鍵字,分析抽取 構建信息;
編譯結果檢查模塊205,用於檢查代碼編譯是否成功,在代碼編譯成功 時對該代碼進行備份,或在代碼編譯失敗時結束每日構建。
上述每日構建裝置,可以與本發明的實施例提供的一種每日構建方法相 結合,在預置的構建時間,自動下載版本代碼,並對所述版本代碼進行編譯 和檢查,生成構建日誌文件,實現了同時對多組代碼的集成編譯,提高了編 譯效率,解決了構建伺服器無法滿足編譯大量代碼的編譯需求的問題。
步驟是可以通過程序來指令相關的硬體完成,所述的程序可以存儲於 一種計 算機可讀存儲介質中,該程序在執行時,包括方法實施例的步驟之一或其組 合。
另外,在本發明各個實施例中的各功能單元可以採用硬體的形式實現, 也可以採用軟體功能模塊的形式實現。所述集成的模塊如果以軟體功能模塊 的形式實現並作為獨立的產品銷售或使用時,也可以存儲在一個計算機可讀 取存儲介質中。
上述提到的存儲介質可以是只讀存儲器,磁碟或光碟等。
以上所述,僅為本發明的具體實施方式
,但本發明的保護範圍並不局限 於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易 想到變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護 範圍應以權利要求所述的保護範圍為準。
權利要求
1、一種每日構建方法,其特徵在於,包括在預置的構建時間,自動下載版本代碼;在下載代碼完成後,對所述版本代碼進行編譯和檢查,生成構建日誌文件。
2、 根據權利要求1所述的每日構建方法,其特徵在於,所述在預置的 構建時間,自動下載版本代碼的步驟之前,還包括檢查代碼的完整性,如果所述代碼不完整,則結束每日構建。
3、 根據權利要求1所述的每日構建方法,其特徵在於,所述在下載代 碼完成後,對所述版本代碼進行編譯和檢查,生成構建日誌文件的步驟之後, 還包括在所述構建日誌文件中查找關鍵字,分析抽取構建信息。
4、 根據權利要求3所述的每日構建方法,其特徵在於,所述構建日誌文件包括編譯日誌和檢查曰志,在所述構建日誌文件中查找關鍵字,分析抽 取構建信息包括根據告警關鍵字,從編譯日誌中抽取編譯告警信息,根據該編譯告警信 息生成告警郵件,發送並備份所述告警郵件;和,根據告警關鍵字,從檢查日誌中抽取告警信息,根據該告警信息生成生 成告警郵件,發送並備份所述告警郵件。
5、 根據權利要求1所述的每日構建方法,其特徵在於,所述在下載代 碼完成後,對所述版本代碼進行編譯和檢查,生成構建日誌文件的步驟之後, 還包括檢查代碼編譯是否成功;如果代碼編譯成功,對該代碼進行備份;或,如果代碼編譯失敗,結束每日構建。
6、 根據權利要求5所述的每日構建方法,其特徵在於,所述如果代碼編譯成功,對該代碼進行備份包括生成版本備份目錄,記錄每日構建的時間; 將所述代碼拷貝到所述版本備份目錄下打包備份。
7、 一種每日構建裝置,其特徵在於,包括代碼下載模塊,用於根據預置的編譯周期,自動下載版本代碼;編譯和檢查模塊,用於在下載代碼完成後,對所述代碼進行編譯和檢查, 生成構建日誌文件。
8、 根據權利要求7所述的每日構建裝置,其特徵在於,還包括完整性檢查模塊,用於檢查代碼的完整性,如杲所述代碼不完整,則結 束每日構建。
9、 根據權利要求7所述的每日構建裝置,其特徵在於,還包括 曰志分析模塊,用於在所述構建日誌文件中查找關鍵字,分析抽取構建信息;編譯結果檢查模塊,用於檢查代碼編譯是否成功,在代碼編譯成功時對 該代碼進行備份,或在代碼編譯失敗時結束每日構建。
10、 根據權利要求7至權利要求9所述的每日構建裝置,其特徵在於, 該每日構建裝置集成於構建伺服器或個人終端中。
全文摘要
本發明公開了一種每日構建方法和裝置。涉及軟體技術領域;解決了構建伺服器無法滿足編譯大量代碼的編譯需求的問題。該方法包括在預置的構建時間,自動下載版本代碼;在下載代碼完成後,對所述版本代碼進行編譯和檢查,生成構建日誌文件。本發明提供的技術方案適用於版本質量控制。
文檔編號G06F9/44GK101650653SQ200910171458
公開日2010年2月17日 申請日期2009年9月4日 優先權日2009年9月4日
發明者劉東棟, 田 朱, 剛 王 申請人:中興通訊股份有限公司