專利名稱:一種軟件開(kāi)發(fā)中的自動(dòng)化編譯方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件開(kāi)發(fā)領(lǐng)域,尤其涉及一種軟件開(kāi)發(fā)中的自動(dòng)化編譯方法及系統(tǒng)。
技術(shù)背景
隨著需求的增多,軟件代碼量越來(lái)越大,自動(dòng)化編譯被提上議程,自動(dòng)化編譯引入 了代碼變更偵測(cè),編譯策略,編譯執(zhí)行,結(jié)果分發(fā)這幾個(gè)重要的概念。但是,目前已有的方 案,一臺(tái)計(jì)算機(jī)在即擔(dān)當(dāng)編譯主控服務(wù)器又擔(dān)當(dāng)編譯機(jī)時(shí),編譯主控服務(wù)器只能對(duì)本機(jī)的 編譯機(jī)分配任務(wù),不能對(duì)其他計(jì)算機(jī)的編譯機(jī)分配任務(wù),主要缺點(diǎn)是,編譯主控服務(wù)器只能 控制本機(jī)的編譯機(jī),不能同時(shí)控制其它不同平臺(tái)上計(jì)算機(jī)中的編譯機(jī)進(jìn)行多類(lèi)型的編譯, 編譯類(lèi)型單一。發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種軟件開(kāi)發(fā)中的自動(dòng)化編譯方法及系統(tǒng),以克服現(xiàn)有 技術(shù)中不能同時(shí)控制其它不同平臺(tái)下計(jì)算機(jī)中的編譯機(jī)進(jìn)行多類(lèi)型的編譯的問(wèn)題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案
一種軟件開(kāi)發(fā)中的自動(dòng)化編譯方法,包括
通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主控服務(wù)器綁定至少兩個(gè)編譯機(jī);
在代碼變更符合編譯條件時(shí),查找與所述編譯主控服務(wù)器綁定的所述至少兩個(gè)編 譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼;
讀取所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼;
發(fā)送編譯目錄和編譯腳本定義參數(shù)到所述至少兩個(gè)編譯機(jī);
控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本定義參數(shù)完成編譯 操作;
所述至少兩個(gè)編譯機(jī)分別位于不同操作系統(tǒng)的計(jì)算機(jī)上或者分別位于相同操作 系統(tǒng)但不同硬件架構(gòu)的計(jì)算機(jī)上。
可選的,所述通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼綁定至少兩個(gè)編譯機(jī)后,還包 括
加載偵測(cè)時(shí)間間隔,根據(jù)所述偵測(cè)時(shí)間間隔周期性偵測(cè)代碼庫(kù)變更動(dòng)作。
可選的,根據(jù)所述偵測(cè)時(shí)間間隔周期性偵測(cè)代碼庫(kù)變更動(dòng)作后,還包括
在偵測(cè)到代碼庫(kù)變更動(dòng)作后,判斷代碼變更是否符合編譯條件;如果代碼變更符 合編譯條件,則執(zhí)行所述查找與所述編譯主控服務(wù)器綁定的所述至少兩個(gè)編譯機(jī)的編譯機(jī) 名稱、編譯機(jī)端口和密碼的步驟。
可選的,所述判斷代碼變更是否符合編譯條件,包括
判斷偵測(cè)到的發(fā)生變更的代碼的分支路徑與需要執(zhí)行的代碼分支路徑是否一致, 判斷等待時(shí)間是否已經(jīng)達(dá)到延時(shí)時(shí)間的長(zhǎng)度;
所述延時(shí)時(shí)間為預(yù)設(shè)的完成代碼提交所需要的時(shí)間;
所述等待時(shí)間的計(jì)時(shí)起點(diǎn)為偵測(cè)到代碼庫(kù)變更的時(shí)間點(diǎn)。
可選的,控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本定義參數(shù)完 成編譯操作,包括
下載代碼到編譯目錄;
執(zhí)行編譯,生成目標(biāo)程序文件;
對(duì)所述目標(biāo)程序文件打包和重命名;
反饋編譯結(jié)果到編譯主控服務(wù)器。
一種軟件開(kāi)發(fā)中的自動(dòng)化編譯系統(tǒng),包括
編譯機(jī)綁定模塊,用于通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主控服務(wù)器綁 定至少兩個(gè)編譯機(jī);
查找模塊,用于查找與所述編譯主控服務(wù)器綁定的所述至少兩個(gè)編譯機(jī)的編譯機(jī) 名稱、編譯機(jī)端口和密碼;
編譯機(jī)信息讀取模塊,用于讀取所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口 和密碼;
編譯指令發(fā)送模塊,用于發(fā)送編譯目錄和編譯腳本定義參數(shù)到所述至少兩個(gè)編譯 機(jī);
控制模塊,用于控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本定義 參數(shù)完成編譯操作。
可選的,還包括
代碼偵測(cè)模塊,用于加載偵測(cè)時(shí)間間隔,根據(jù)所述偵測(cè)時(shí)間間隔周期性偵測(cè)代碼庫(kù)變更動(dòng)作。
可選的,還包括
代碼變更判斷模塊,用于判斷所述代碼變更是否符合編譯條件。
可選的,所述代碼變更判斷模塊,包括
分支路徑判斷單元,用于判斷偵測(cè)到的發(fā)生變更的代碼的分支路徑與需要執(zhí)行的 代碼分支路徑是否一致;
等待時(shí)間判斷單元,用于判斷所述等待時(shí)間否已經(jīng)達(dá)到延時(shí)時(shí)間的長(zhǎng)度;
所述延時(shí)時(shí)間為預(yù)設(shè)的完成代碼提交所需要的時(shí)間;
所述等待時(shí)間的計(jì)時(shí)起點(diǎn)為偵測(cè)到代碼庫(kù)變更的時(shí)間點(diǎn)。
可選的,所述控制模塊包括
代碼下載單元,用于下載代碼到編譯目錄;
編譯執(zhí)行單元,用于執(zhí)行編譯,生成目標(biāo)程序文件;
重命名單元,用于對(duì)所述目標(biāo)程序文件打包和重命名;
編譯結(jié)果反饋單元,用于反饋編譯結(jié)果到主控服務(wù)器。
根據(jù)本發(fā)明提供的具體實(shí)施例,本發(fā)明公開(kāi)了以下技術(shù)效果
本發(fā)明提供的技術(shù)方案,編譯主控服務(wù)器通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為 自身綁定至少兩個(gè)編譯機(jī),所述至少兩個(gè)編譯機(jī)分別位于不同操作系統(tǒng)的計(jì)算機(jī)上或者分 別位于相同操作系統(tǒng)但不同硬件架構(gòu)的計(jì)算機(jī)上。因此,本發(fā)明提供的技術(shù)方案,編譯主控 服務(wù)器能夠同時(shí)控制位于不同平臺(tái)上計(jì)算機(jī)中的編譯機(jī),實(shí)現(xiàn)多類(lèi)型的編譯,克服了現(xiàn)有技術(shù)中編譯主控服務(wù)器只能控制本計(jì)算機(jī)上編譯機(jī)、編譯類(lèi)型單一的缺陷,解決了現(xiàn)有技 術(shù)中,需要耗費(fèi)大量時(shí)間依次在不同平臺(tái)上計(jì)算機(jī)中的編譯機(jī)進(jìn)行編譯的問(wèn)題,大大提高 了工作效率。
其次,在代碼庫(kù)中某一路徑的代碼出現(xiàn)錯(cuò)誤時(shí),需要更改,經(jīng)過(guò)更改后的某一路徑 的代碼需要重新編譯。因?yàn)楸景l(fā)明提供的技術(shù)方案,編譯主控服務(wù)器能夠同時(shí)控制位于不 同平臺(tái)上計(jì)算機(jī)中的編譯機(jī),所以,編譯主控服務(wù)器能夠同時(shí)控制位于不同平臺(tái)上計(jì)算機(jī) 中的編譯機(jī)對(duì)更改后的某一路徑的代碼重新編譯。而現(xiàn)有技術(shù)中,需要依次在不同平臺(tái)上 計(jì)算機(jī)中的編譯機(jī)對(duì)更改后的某一路徑的代碼重新編譯。通過(guò)比較可以得到,本發(fā)明提供 的技術(shù)方案能夠快速高效的針對(duì)代碼庫(kù)中不同路徑代碼的修改或者變更進(jìn)行編譯,節(jié)省工 序。
另外,本發(fā)明提供的技術(shù)方案,判斷偵測(cè)到的發(fā)生變更的代碼分支路徑與需要執(zhí) 行的代碼分支路徑一致后,再依次執(zhí)行后續(xù)操作,能夠有效避免違背編譯順序的編譯操作, 所述編譯順序?yàn)榫幾g主控服務(wù)器預(yù)先定義的編譯順序;判斷等待時(shí)間已經(jīng)達(dá)到延時(shí)時(shí)間的 長(zhǎng)度后,再依次執(zhí)行后續(xù)操作,能夠避免因代碼沒(méi)有完全變更就進(jìn)行編譯操作所造成的錯(cuò)誤。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本 發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù) 提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例一公開(kāi)的軟件開(kāi)發(fā)中的自動(dòng)化編譯方法的流程圖2為本發(fā)明公開(kāi)的編譯主控服務(wù)器控制編譯機(jī)完成編譯操作的方法流程圖3為本發(fā)明實(shí)施例一公開(kāi)的軟件開(kāi)發(fā)中的自動(dòng)化編譯系統(tǒng)的結(jié)構(gòu)圖4為本發(fā)明公開(kāi)的控制模塊的結(jié)構(gòu)圖5為本發(fā)明實(shí)施例二公開(kāi)的軟件開(kāi)發(fā)中的自動(dòng)化編譯方法的流程圖6為本發(fā)明公開(kāi)的判斷代碼變更是否符合編譯條件的方法流程圖7為本發(fā)明實(shí)施例二公開(kāi)的軟件開(kāi)發(fā)中的自動(dòng)化編譯系統(tǒng)的結(jié)構(gòu)示意圖8為本發(fā)明公開(kāi)的代碼變更判斷模塊的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明公開(kāi)的一種軟件開(kāi)發(fā)中的自動(dòng)化編譯方法及系統(tǒng),目的是使編譯主控服務(wù) 器能夠同時(shí)控制不同平臺(tái)上計(jì)算機(jī)中的編譯機(jī)進(jìn)行多類(lèi)型的編譯。具體執(zhí)行過(guò)程通過(guò)以下 實(shí)施例進(jìn)行說(shuō)明。
實(shí)施例一
圖1為本發(fā)明實(shí)施例一公開(kāi)的軟件開(kāi)發(fā)中的自動(dòng)化編譯方法的流程圖。如圖1所 示,該方法包括
步驟SlOl :通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主控服務(wù)器綁定至少兩個(gè) 編譯機(jī);
具體的,編譯主控服務(wù)器通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為自身綁定至少兩 個(gè)編譯機(jī);所述編譯機(jī)名稱、編譯機(jī)端口和密碼是編譯機(jī)自身參數(shù)。所述至少兩個(gè)編譯機(jī)分 別位于不同操作系統(tǒng)的計(jì)算機(jī)上或者分別位于相同操作系統(tǒng)但不同硬件架構(gòu)的計(jì)算機(jī)上。
可選的,所述編譯主控服務(wù)器通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為自身綁定三 個(gè)編譯機(jī),第一個(gè)編譯機(jī)位于X86架構(gòu)Windows操作系統(tǒng)上,第二個(gè)編譯機(jī)位于X86架構(gòu) Linux操作系統(tǒng)上,第三個(gè)編譯機(jī)位于ARM架構(gòu)Linux操作系統(tǒng)上。X86或80X86是英特爾 首先開(kāi)發(fā)制造的一種微處理器體系結(jié)構(gòu)的泛稱。ARM (Advanced RISC Machine :進(jìn)階精簡(jiǎn) 指令集機(jī)器)架構(gòu),是一個(gè)32位元精簡(jiǎn)指令集中央處理器架構(gòu),廣泛地使用在許多嵌入式系 統(tǒng)設(shè)計(jì)。
步驟S102 :在代碼變更符合編譯條件時(shí),查找與所述編譯主控服務(wù)器綁定的所述 至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼;
具體的,在代碼變更符合編譯條件時(shí),編譯主控服務(wù)器查找與自身綁定的所述至 少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼。
步驟S103 :讀取所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼;
具體的,編譯主控服務(wù)器讀取查找到的所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯 機(jī)端口和密碼。
步驟S104 :發(fā)送編譯目錄和編譯腳本定義參數(shù)到所述至少兩個(gè)編譯機(jī);
具體的,編譯主控服務(wù)器發(fā)送編譯目錄和編譯腳本定義參數(shù)到與自身綁定的所述 至少兩個(gè)編譯機(jī)。所述編譯目錄為存放代碼的地址,所述編譯腳本定義參數(shù)包括下載代 碼,編譯執(zhí)行和執(zhí)行命名。
步驟S105 :控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本定義參 數(shù)完成編譯操作;
具體的,編譯主控服務(wù)器控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯 腳本定義參數(shù)完成編譯操作,可分為四個(gè)步驟。
圖2為本發(fā)明公開(kāi)的編譯主控服務(wù)器控制編譯機(jī)完成編譯操作的方法流程圖。如 圖2所示,該方法包括
步驟S1051 :下載代碼到編譯目錄;
具體的,編譯機(jī)從代碼庫(kù)下載變更后的代碼到編譯目錄。
步驟S1052 :執(zhí)行編譯;
具體的,編譯機(jī)對(duì)下載的所述代碼執(zhí)行編譯,生成目標(biāo)文件。
步驟S1053 :對(duì)編譯后的目標(biāo)程序文件打包和重命名;
具體的,對(duì)編譯后生成的所述目標(biāo)文件進(jìn)行打包和重命名。
步驟S1054 :反饋編譯結(jié)果到編譯主控服務(wù)器;
具體的,步驟S105fS1053執(zhí)行過(guò)程中如果任何一項(xiàng)操作執(zhí)行失敗,則終止當(dāng)前 進(jìn)程,反饋編譯結(jié)果到編譯主控服務(wù)器。步驟S105f S1053依次執(zhí)行成功,也反饋編譯結(jié)果到編譯主控服務(wù)器。所述編譯結(jié)果包括成功或者失敗。
可選的,在編譯主控服務(wù)器接收到所述至少兩個(gè)編譯機(jī)反饋的所述編譯結(jié)果后, 通過(guò)萬(wàn)維網(wǎng)服務(wù)器發(fā)送所述編譯結(jié)果到指定聯(lián)系人,達(dá)到編譯結(jié)果實(shí)時(shí)通知指定聯(lián)系人 的目的。具體的,編譯主控服務(wù)器將所述編譯結(jié)果發(fā)送到網(wǎng)絡(luò)服務(wù)器,調(diào)用網(wǎng)絡(luò)服務(wù)器的 Email (電子郵箱)接口,發(fā)送所述編譯結(jié)果到指定聯(lián)系人的電子郵箱。
對(duì)應(yīng)于本發(fā)明實(shí)施例一公開(kāi)的一種軟件開(kāi)發(fā)中的自動(dòng)化編譯方法,本發(fā)明實(shí)施例 一公開(kāi)了一種軟件開(kāi)發(fā)中的自動(dòng)化編譯系統(tǒng)。
圖3為本發(fā)明實(shí)施例一公開(kāi)的軟件開(kāi)發(fā)中的自動(dòng)化編譯系統(tǒng)的結(jié)構(gòu)示意圖。如圖 3所示,該系統(tǒng)包括
編譯機(jī)綁定模塊301 :用于通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主控服務(wù) 器綁定至少兩個(gè)編譯機(jī);
查找模塊302 :用于查找與所述編譯主控服務(wù)器綁定的所述至少兩個(gè)編譯機(jī)的編 譯機(jī)名稱、編譯機(jī)端口和密碼;
編譯機(jī)信息讀取模塊303 :用于讀取所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī) 端口和密碼;
編譯指令發(fā)送模塊304 :用于發(fā)送編譯目錄和編譯腳本定義參數(shù)到所述至少兩個(gè) 編譯機(jī);
控制模塊305 :用于控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本 定義參數(shù)完成編譯操作;
具體的,所述控制模塊305包括四個(gè)單元。
圖4為本發(fā)明公開(kāi)的控制模塊的結(jié)構(gòu)圖。如圖4所示,該模塊包括
代碼下載單元3051 :用于下載代碼到編譯目錄;
編譯執(zhí)行單元3052 :用于執(zhí)行編譯,生成目標(biāo)程序文件;
重命名單元3053 :用于對(duì)所述目標(biāo)程序文件打包和重命名;
編譯結(jié)果反饋單元3054 :用于反饋編譯結(jié)果到主控服務(wù)器。
本發(fā)明實(shí)施例一提供的技術(shù)方案,編譯主控服務(wù)器通過(guò)編譯機(jī)名稱、編譯機(jī)端口 和密碼為自身綁定至少兩個(gè)編譯機(jī),所述至少兩個(gè)編譯機(jī)分別位于不同操作系統(tǒng)的計(jì)算機(jī) 上或者分別位于相同操作系統(tǒng)但不同硬件架構(gòu)的計(jì)算機(jī)上。因此,本發(fā)明實(shí)施例一提供的 技術(shù)方案,編譯主控服務(wù)器能夠同時(shí)控制位于不同平臺(tái)上計(jì)算機(jī)中的編譯機(jī),實(shí)現(xiàn)多類(lèi)型 的編譯,克服了現(xiàn)有技術(shù)中編譯主控服務(wù)器只能控制本計(jì)算機(jī)上編譯機(jī)、編譯類(lèi)型單一的 缺陷,解決了現(xiàn)有技術(shù)中,需要耗費(fèi)大量時(shí)間依次在不同平臺(tái)上計(jì)算機(jī)中的編譯機(jī)進(jìn)行編 譯的問(wèn)題,大大提高了工作效率。
其次,在代碼庫(kù)中某一路徑的代碼出現(xiàn)錯(cuò)誤時(shí),需要更改,經(jīng)過(guò)更改后的某一路徑 的代碼需要重新編譯。因?yàn)楸景l(fā)明實(shí)施例一提供的技術(shù)方案,編譯主控服務(wù)器能夠同時(shí)控 制位于不同平臺(tái)上計(jì)算機(jī)中的編譯機(jī),所以,編譯主控服務(wù)器能夠同時(shí)控制位于不同平臺(tái) 上計(jì)算機(jī)中的編譯機(jī)對(duì)更改后的某一路徑的代碼重新編譯。而現(xiàn)有技術(shù)中,需要依次在不 同平臺(tái)上計(jì)算機(jī)中的編譯機(jī)對(duì)更改后的某一路徑的代碼重新編譯。通過(guò)比較可以得到,本 發(fā)明實(shí)施例一提供的技術(shù)方案能夠快速高效的針對(duì)代碼庫(kù)中不同路徑代碼的變更進(jìn)行編 譯,節(jié)省工序。
本發(fā)明實(shí)施例一提供的技術(shù)方案,通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主 控服務(wù)器綁定至少兩個(gè)編譯機(jī)后,在代碼變更符合編譯條件時(shí),依次執(zhí)行后續(xù)操作。但是, 有時(shí)會(huì)遇到代碼變更不符合編譯條件的情況,代碼變更不符合編譯條件則無(wú)法完成編譯, 為此,本發(fā)明公開(kāi)了實(shí)施例二。
實(shí)施例二
圖5為本發(fā)明實(shí)施例二公開(kāi)的軟件開(kāi)發(fā)中的自動(dòng)化編譯方法的流程圖。如圖5所 示,該方法包括
步驟S501 :通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主控服務(wù)器綁定至少兩個(gè) 編譯機(jī);
步驟S502 :加載偵測(cè)時(shí)間間隔,根據(jù)所述偵測(cè)時(shí)間間隔周期性偵測(cè)代碼庫(kù)變更動(dòng) 作;
具體的,編譯主控服務(wù)器加載偵測(cè)時(shí)間間隔,根據(jù)所述偵測(cè)時(shí)間間隔周期性偵測(cè) 代碼庫(kù)變更動(dòng)作;所述偵測(cè)時(shí)間間隔,可選的,為O. 5分鐘。
編譯主控服務(wù)器加載還需要加載代碼庫(kù)的路徑、登陸用戶名、登陸密碼和分支路 徑。具體的,編譯主控服務(wù)器依據(jù)加載的所述代碼庫(kù)的路徑、登陸用戶和登陸密碼,周期性 偵測(cè)所述代碼庫(kù)中分支路徑的變更動(dòng)作。所述分支路徑為代碼庫(kù)不同路徑中的一支,用于 存儲(chǔ)不同程序的代碼。
步驟S503 :在偵測(cè)到代碼庫(kù)變更動(dòng)作后,判斷代碼變更是否符合編譯條件;如 果代碼變更符合編譯條件,則執(zhí)行步驟S504 ;如果代碼變更不符合編譯條件,則返回步驟 S502 ;
步驟S504 :在代碼變更符合編譯條件時(shí),查找與所述編譯主控服務(wù)器綁定的所述 至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼;
步驟S505 :讀取所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼;
步驟S506 :發(fā)送編譯目錄和編譯腳本定義參數(shù)到所述至少兩個(gè)編譯機(jī);
步驟S507 :控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本定義參 數(shù)完成編譯操作。
具體的,在編譯主控服務(wù)器偵測(cè)到代碼庫(kù)變更動(dòng)作后,判斷代碼變更是否符合編 譯條件,可以分為兩個(gè)步驟。
圖6為本發(fā)明公開(kāi)的步驟S503的判斷代碼變更是否符合編譯條件的方法流程圖。 如圖6所示,該方法包括
步驟S5031 :判斷偵測(cè)到的發(fā)生變更的代碼的分支路徑與需要執(zhí)行的代碼分支路 徑是否一致,如果是,則執(zhí)行步驟S5032 ;
具體的,編譯主控服務(wù)器判斷偵測(cè)到的發(fā)生變更的代碼的分支路徑與需要執(zhí)行的 代碼分支路徑是否一致。編譯主控服務(wù)器預(yù)先定義不同代碼分支路徑中代碼的執(zhí)行順序, 在編譯完一條代碼分支路徑中的代碼后,編譯主控服務(wù)器會(huì)依照所述執(zhí)行順序更新至另外 一條需要執(zhí)行的代碼分支路徑。如果偵測(cè)到的發(fā)生變更的代碼的分支路徑,與編譯主控服 務(wù)器依照所述執(zhí)行順序更新后的需要執(zhí)行的代碼分支路徑,是同一條路徑,則偵測(cè)到的發(fā) 生變更的代碼的分支路徑與需要執(zhí)行的代碼分支路徑一致;否則,偵測(cè)到的發(fā)生變更的代 碼的分支路徑與需要執(zhí)行的代碼分支路徑不一致。
步驟S5032 :判斷等待時(shí)間是否已經(jīng)達(dá)到延時(shí)時(shí)間的長(zhǎng)度;
具體的,編譯主控服務(wù)器判斷等待時(shí)間是否已經(jīng)達(dá)到延時(shí)時(shí)間的長(zhǎng)度,所述等待 時(shí)間的計(jì)時(shí)起點(diǎn)為偵測(cè)到代碼庫(kù)變更的時(shí)間點(diǎn),所述延時(shí)時(shí)間為完成代碼提交所需要的時(shí) 間,可選的,所述延時(shí)時(shí)間為5分鐘。
對(duì)應(yīng)于本發(fā)明實(shí)施例二公開(kāi)的軟件開(kāi)發(fā)中的自動(dòng)化編譯方法,本發(fā)明實(shí)施例二公 開(kāi)了軟件開(kāi)發(fā)中的自動(dòng)化編譯系統(tǒng)。
圖7為本發(fā)明實(shí)施例二公開(kāi)的軟件開(kāi)發(fā)中的自動(dòng)化編譯系統(tǒng)的結(jié)構(gòu)圖。如圖7所 示,該系統(tǒng)包括
編譯機(jī)綁定模塊701 :用于通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主控服務(wù) 器綁定至少兩個(gè)編譯機(jī);
代碼偵測(cè)模塊702 :用于加載偵測(cè)時(shí)間間隔,根據(jù)所述偵測(cè)時(shí)間間隔周期性偵測(cè) 代碼庫(kù)變更動(dòng)作;
代碼變更判斷模塊703 :用于判斷所述代碼變更是否符合編譯條件;
圖8為本發(fā)明公開(kāi)的代碼變更判斷模塊703的結(jié)構(gòu)圖。如圖8所示,代碼變更判 斷模塊703可以包括
分支路徑判斷單元7031 :用于判斷偵測(cè)到的發(fā)生變更的代碼的分支路徑與需要 執(zhí)行的代碼分支路徑是否一致;
等待時(shí)間判斷單元7032 :用于判斷所述等待時(shí)間否已經(jīng)達(dá)到延時(shí)時(shí)間的長(zhǎng)度。
查找模塊704 :用于查找與所述編譯主控服務(wù)器綁定的所述至少兩個(gè)編譯機(jī)的編 譯機(jī)名稱、編譯機(jī)端口和密碼;
編譯機(jī)信息讀取模塊705 :用于讀取所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī) 端口和密碼;
編譯指令發(fā)送模塊706 :用于發(fā)送編譯目錄和編譯腳本定義參數(shù)到所述至少兩個(gè) 編譯機(jī);
控制模塊707 :用于控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本 定義參數(shù)完成編譯操作。
本發(fā)明實(shí)施例二提供的技術(shù)方案,通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主 控服務(wù)器綁定至少兩個(gè)編譯機(jī)后,編譯主控服務(wù)器周期性偵測(cè)代碼庫(kù)變更動(dòng)作,當(dāng)編譯主 控服務(wù)器偵測(cè)到代碼變更時(shí),判斷代碼變更是否符合編譯條件。具體的,判斷偵測(cè)到的發(fā)生 變更的代碼的分支路徑與需要執(zhí)行的代碼分支路徑是否一致,判斷等待時(shí)間是否已經(jīng)達(dá)到 延時(shí)時(shí)間的長(zhǎng)度。判斷代碼變更符合編譯策略后,再依次執(zhí)行后續(xù)操作。
具體的,判斷偵測(cè)到的發(fā)生變更的代碼的分支路徑與需要執(zhí)行的代碼分支路徑一 致后,再依次執(zhí)行后續(xù)操作,能夠有效避免違背編譯順序的編譯操作,所述編譯順序?yàn)榫幾g 主控服務(wù)器預(yù)先定義的編譯順序;判斷等待時(shí)間已經(jīng)達(dá)到延時(shí)時(shí)間的長(zhǎng)度后,再依次執(zhí)行 后續(xù)操作,能夠避免因代碼沒(méi)有完全變更就進(jìn)行編譯操作所造成的錯(cuò)誤。
本說(shuō)明書(shū)中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他 實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。對(duì)于實(shí)施例公開(kāi)的系統(tǒng) 而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō) 明即可。
對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。 對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的 一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明 將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一 致的最寬的范圍。
權(quán)利要求
1.一種軟件開(kāi)發(fā)中的自動(dòng)化編譯方法,其特征在于,包括 通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主控服務(wù)器綁定至少兩個(gè)編譯機(jī); 在代碼變更符合編譯條件時(shí),查找與所述編譯主控服務(wù)器綁定的所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼; 讀取所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼; 發(fā)送編譯目錄和編譯腳本定義參數(shù)到所述至少兩個(gè)編譯機(jī); 控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本定義參數(shù)完成編譯操作; 所述至少兩個(gè)編譯機(jī)分別位于不同操作系統(tǒng)的計(jì)算機(jī)上或者分別位于相同操作系統(tǒng)但不同硬件架構(gòu)的計(jì)算機(jī)上。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼綁定至少兩個(gè)編譯機(jī)后,還包括 加載偵測(cè)時(shí)間間隔,根據(jù)所述偵測(cè)時(shí)間間隔周期性偵測(cè)代碼庫(kù)變更動(dòng)作。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)所述偵測(cè)時(shí)間間隔周期性偵測(cè)代碼庫(kù)變更動(dòng)作后,還包括 在偵測(cè)到代碼庫(kù)變更動(dòng)作后,判斷代碼變更是否符合編譯條件;如果代碼變更符合編譯條件,則執(zhí)行所述查找與所述編譯主控服務(wù)器綁定的所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼的步驟。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述判斷代碼變更是否符合編譯條件,包括 判斷偵測(cè)到的發(fā)生變更的代碼的分支路徑與需要執(zhí)行的代碼分支路徑是否一致,判斷等待時(shí)間是否已經(jīng)達(dá)到延時(shí)時(shí)間的長(zhǎng)度; 所述延時(shí)時(shí)間為預(yù)設(shè)的完成代碼提交所需要的時(shí)間; 所述等待時(shí)間的計(jì)時(shí)起點(diǎn)為偵測(cè)到代碼庫(kù)變更的時(shí)間點(diǎn)。
5.根據(jù)權(quán)利要求1-4所述的方法,其特征在于,控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本定義參數(shù)完成編譯操作,包括 下載代碼到編譯目錄; 執(zhí)行編譯,生成目標(biāo)程序文件; 對(duì)所述目標(biāo)程序文件打包和重命名; 反饋編譯結(jié)果到編譯主控服務(wù)器。
6.一種軟件開(kāi)發(fā)中的自動(dòng)化編譯系統(tǒng),其特征在于,包括 編譯機(jī)綁定模塊,用于通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主控服務(wù)器綁定至少兩個(gè)編譯機(jī); 查找模塊,用于查找與所述編譯主控服務(wù)器綁定的所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼; 編譯機(jī)信息讀取模塊,用于讀取所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼; 編譯指令發(fā)送模塊,用于發(fā)送編譯目錄和編譯腳本定義參數(shù)到所述至少兩個(gè)編譯機(jī); 控制模塊,用于控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本定義參數(shù)完成編譯操作。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,還包括 代碼偵測(cè)模塊,用于加載偵測(cè)時(shí)間間隔,根據(jù)所述偵測(cè)時(shí)間間隔周期性偵測(cè)代碼庫(kù)變更動(dòng)作。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,還包括 代碼變更判斷模塊,用于判斷所述代碼變更是否符合編譯條件。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述代碼變更判斷模塊,包括 分支路徑判斷單元,用于判斷偵測(cè)到的發(fā)生變更的代碼的分支路徑與需要執(zhí)行的代碼分支路徑是否一致; 等待時(shí)間判斷單元,用于判斷所述等待時(shí)間否已經(jīng)達(dá)到延時(shí)時(shí)間的長(zhǎng)度; 所述延時(shí)時(shí)間為預(yù)設(shè)的完成代碼提交所需要的時(shí)間; 所述等待時(shí)間的計(jì)時(shí)起點(diǎn)為偵測(cè)到代碼庫(kù)變更的時(shí)間點(diǎn)。
10.根據(jù)權(quán)利要求6-9任意一項(xiàng)所述的系統(tǒng),其特征在于,所述控制模塊包括 代碼下載單元,用于下載代碼到編譯目錄; 編譯執(zhí)行單元,用于執(zhí)行編譯,生成目標(biāo)程序文件; 重命名單元,用于對(duì)所述目標(biāo)程序文件打包和重命名; 編譯結(jié)果反饋單元,用于反饋編譯結(jié)果到編譯主控服務(wù)器。
全文摘要
本發(fā)明公開(kāi)了一種軟件開(kāi)發(fā)中的自動(dòng)化編譯方法及系統(tǒng)。所述方法包括通過(guò)編譯機(jī)名稱、編譯機(jī)端口和密碼為編譯主控服務(wù)器綁定至少兩個(gè)編譯機(jī);在代碼變更符合編譯條件時(shí),查找與所述編譯主控服務(wù)器綁定的所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼;讀取所述至少兩個(gè)編譯機(jī)的編譯機(jī)名稱、編譯機(jī)端口和密碼;發(fā)送編譯目錄和編譯腳本定義參數(shù)到所述至少兩個(gè)編譯機(jī);控制所述至少兩個(gè)編譯機(jī)依據(jù)所述編譯目錄和所述編譯腳本定義參數(shù)完成編譯操作。采用本發(fā)明所公開(kāi)的軟件開(kāi)發(fā)中的自動(dòng)化編譯方法及系統(tǒng),編譯主控服務(wù)器能夠同時(shí)控制不同平臺(tái)上計(jì)算機(jī)中的編譯機(jī)進(jìn)行多類(lèi)型的編譯。
文檔編號(hào)G06F9/45GK103019772SQ20121048432
公開(kāi)日2013年4月3日 申請(qǐng)日期2012年11月23日 優(yōu)先權(quán)日2012年11月23日
發(fā)明者劉鵬宇 申請(qǐng)人:東方網(wǎng)力科技股份有限公司