一種動(dòng)態(tài)分配編譯機(jī)的系統(tǒng)及其方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及編譯機(jī)技術(shù)領(lǐng)域,尤其是涉及一種動(dòng)態(tài)分配編譯機(jī)的系統(tǒng)及其方法。
【背景技術(shù)】
[0002]如今智能終端正在高速發(fā)展,并越來(lái)越普及,智能終端上運(yùn)行的軟件程序發(fā)布頻率也要求越來(lái)越高。軟件發(fā)布需要編譯機(jī)來(lái)完成,如何在有限的編譯機(jī)資源情況下實(shí)現(xiàn)高效的軟件發(fā)布是我們一直在探討的問題。
[0003]目前大多數(shù)廠商使用的還是靜態(tài)配置編譯機(jī)的方式。靜態(tài)配置編譯機(jī)的方式具體為:把現(xiàn)有的編譯機(jī)部署在集成系統(tǒng)(比如Jenkins等軟件集成系統(tǒng))中,沒有使用數(shù)據(jù)庫(kù)維護(hù),每次發(fā)布軟件時(shí)需要手動(dòng)選擇某一臺(tái)編譯機(jī)。該種方式有如下弊端:編譯機(jī)使用效率低以及需要人工干預(yù),造成成本較高及出錯(cuò)率高。
【發(fā)明內(nèi)容】
[0004]本發(fā)明主要解決的技術(shù)問題是提供一種動(dòng)態(tài)分配編譯機(jī)的系統(tǒng)及其方法,能夠自動(dòng)分配編譯任務(wù),實(shí)現(xiàn)編譯機(jī)的高效使用及降低出錯(cuò)率。
[0005]為解決上述技術(shù)問題,本發(fā)明采用的一個(gè)技術(shù)方案是:提供一種動(dòng)態(tài)分配編譯機(jī)的方法,該方法包括:發(fā)起待編譯任務(wù),并將待編譯任務(wù)進(jìn)行存儲(chǔ),進(jìn)而將待編譯任務(wù)標(biāo)不為等待狀態(tài),以等待編譯機(jī)進(jìn)行編譯;獲取編譯命令,判斷編譯機(jī)的當(dāng)前編譯狀態(tài),并根據(jù)當(dāng)前編譯狀態(tài)來(lái)設(shè)置待編譯任務(wù)為繼續(xù)等待還是進(jìn)入編譯階段,其中,當(dāng)設(shè)置為繼續(xù)等待時(shí),將繼續(xù)存儲(chǔ)待編譯任務(wù),當(dāng)設(shè)置為進(jìn)入編譯階段時(shí),將待編譯任務(wù)發(fā)送到編譯機(jī)中,由編譯機(jī)對(duì)待編譯任務(wù)進(jìn)行編譯。
[0006]其中,方法還包括:獲取編譯機(jī)編譯任務(wù)的能力,其中能力包括編譯機(jī)能夠同時(shí)編譯相同類型的任務(wù)的第一數(shù)量閾值以及最多能同時(shí)編譯的任務(wù)的第二數(shù)量閾值,其中,第一數(shù)量閾值小于或等于第二數(shù)量閾值;判斷編譯機(jī)的當(dāng)前編譯狀態(tài)的步驟包括:第一次判斷編譯機(jī)當(dāng)前編譯的任務(wù)的數(shù)量是否大于或等于第一數(shù)量閾值,并在第一判斷的結(jié)果為否時(shí),將待編譯任務(wù)設(shè)置為進(jìn)入編譯階段,并進(jìn)一步將待編譯任務(wù)發(fā)送到編譯機(jī)中。
[0007]其中,方法還包括:在第一次判斷的結(jié)果為是時(shí),第二次判斷編譯機(jī)當(dāng)前編譯的任務(wù)的數(shù)量是否大于或等于第二數(shù)量閾值,并在第二次判斷的結(jié)果為是時(shí),設(shè)置待編譯任務(wù)為繼續(xù)等待。
[0008]其中,方法還包括:在第二次判斷的結(jié)果為否時(shí),第三次判斷編譯機(jī)當(dāng)前編譯的任務(wù)是否與待編譯任務(wù)的類型相同,并在第三次判斷的結(jié)果為否時(shí)將待編譯任務(wù)設(shè)置為進(jìn)入編譯階段,并進(jìn)一步將待編譯任務(wù)發(fā)送到編譯機(jī)中。
[0009]其中,方法還包括:在第三次判斷的結(jié)果為是時(shí),第四次判斷與待編譯任務(wù)相同類型的任務(wù)的數(shù)量是否大于或等于第一數(shù)量閾值,并在第四次判斷的結(jié)果為否時(shí)將待編譯任務(wù)設(shè)置為進(jìn)入編譯階段,并進(jìn)一步將待編譯任務(wù)發(fā)送到編譯機(jī)中,在第四次判斷的結(jié)果為是時(shí),設(shè)置待編譯任務(wù)為繼續(xù)等待。
[0010]為解決上述技術(shù)問題,本發(fā)明采用的另一個(gè)技術(shù)方案是:提供一種動(dòng)態(tài)分配編譯機(jī)的系統(tǒng),該系統(tǒng)包括:客制化裝置,用于發(fā)起待編譯任務(wù),并進(jìn)一步發(fā)起編譯命令;數(shù)據(jù)庫(kù),用于存儲(chǔ)待編譯任務(wù);分配裝置,用于將存儲(chǔ)在數(shù)據(jù)庫(kù)中的待編譯任務(wù)標(biāo)示為等待狀態(tài),以等待編譯機(jī)進(jìn)行編譯,并在獲取到編譯命令時(shí),判斷編譯機(jī)的當(dāng)前編譯狀態(tài),并根據(jù)當(dāng)前編譯狀態(tài)來(lái)設(shè)置待編譯任務(wù)為繼續(xù)等待還是進(jìn)入編譯階段,其中,當(dāng)設(shè)置為繼續(xù)等待時(shí),數(shù)據(jù)庫(kù)將繼續(xù)存儲(chǔ)待編譯任務(wù),當(dāng)設(shè)置為進(jìn)入編譯階段時(shí),分配裝置將待編譯任務(wù)發(fā)送到編譯機(jī)中,由編譯機(jī)對(duì)待編譯任務(wù)進(jìn)行編譯。
[0011]其中,分配裝置進(jìn)一步包括:獲取單元,用于獲取編譯機(jī)編譯任務(wù)的能力,其中能力包括編譯機(jī)能夠同時(shí)編譯相同類型的任務(wù)的第一數(shù)量閾值以及最多能同時(shí)編譯的任務(wù)的第二數(shù)量閾值,其中,第一數(shù)量閾值小于或等于第二數(shù)量閾值;第一判斷單元,用于判斷編譯機(jī)當(dāng)前編譯的任務(wù)的數(shù)量是否大于或等于第一數(shù)量閾值;分配單元,在第一判斷單元判斷的結(jié)果為否時(shí),將待編譯任務(wù)設(shè)置為進(jìn)入編譯階段,并進(jìn)一步將待編譯任務(wù)發(fā)送到編譯機(jī)中。
[0012]其中,分配裝置進(jìn)一步包括:第二判斷單元,用于在第一判斷單元判斷的結(jié)果為是時(shí),進(jìn)一步判斷編譯機(jī)當(dāng)前編譯的任務(wù)的數(shù)量是否大于或等于第二數(shù)量閾值;分配單元在第二判斷單元判斷的結(jié)果為是時(shí),設(shè)置待編譯任務(wù)為繼續(xù)等待。
[0013]其中,分配裝置進(jìn)一步包括:第三判斷單元,用于在第二判斷單元判斷的結(jié)果為否時(shí),進(jìn)一步判斷編譯機(jī)當(dāng)前編譯的任務(wù)是否與待編譯任務(wù)的類型相同;分配單元在第三判斷單元判斷的結(jié)果為否時(shí)將待編譯任務(wù)設(shè)置為進(jìn)入編譯階段,并進(jìn)一步將待編譯任務(wù)發(fā)送到編譯機(jī)中。
[0014]其中,分配裝置進(jìn)一步包括:第四判斷單元,用于在第三判斷單元判斷的結(jié)果為是時(shí),進(jìn)一步判斷與待編譯任務(wù)相同類型的任務(wù)的數(shù)量是否大于或等于第一數(shù)量閾值;分配單元在第四判斷單元判斷的結(jié)果為否時(shí)將待編譯任務(wù)設(shè)置為進(jìn)入編譯階段,并進(jìn)一步將待編譯任務(wù)發(fā)送到編譯機(jī)中,在第四判斷單元判斷的結(jié)果為是時(shí),設(shè)置待編譯任務(wù)為繼續(xù)等待。
[0015]本發(fā)明的有益效果是:區(qū)別于現(xiàn)有技術(shù)的情況,本發(fā)明的動(dòng)態(tài)分配編譯機(jī)的方法具體為:首先發(fā)起待編譯任務(wù),并將待編譯任務(wù)進(jìn)行存儲(chǔ),進(jìn)而將待編譯任務(wù)標(biāo)示為等待狀態(tài),以等待編譯機(jī)進(jìn)行編譯,獲取編譯命令,并判斷編譯機(jī)的當(dāng)前編譯狀態(tài),進(jìn)一步根據(jù)當(dāng)前編譯狀態(tài)來(lái)設(shè)置待編譯任務(wù)為繼續(xù)等待還是進(jìn)入編譯階段,其中,當(dāng)設(shè)置為繼續(xù)等待時(shí),將繼續(xù)存儲(chǔ)待編譯任務(wù),當(dāng)設(shè)置為進(jìn)入編譯階段時(shí),將待編譯任務(wù)發(fā)送到編譯機(jī)中,由編譯機(jī)對(duì)待編譯任務(wù)進(jìn)行編譯。因此,本發(fā)明能夠根據(jù)編譯機(jī)的當(dāng)前編譯狀態(tài)自動(dòng)分配編譯任務(wù),實(shí)現(xiàn)編譯機(jī)的高效使用及降低出錯(cuò)率。
【附圖說(shuō)明】
[0016]圖1是本發(fā)明實(shí)施例提供的一種動(dòng)態(tài)分配編譯機(jī)的方法的流程圖;
[0017]圖2是本發(fā)明實(shí)施例提供的另一種動(dòng)態(tài)分配編譯機(jī)的方法的流程圖;
[0018]圖3是本發(fā)明實(shí)施例提供的又一種動(dòng)態(tài)分配編譯機(jī)的方法的流程圖;
[0019]圖4是本發(fā)明實(shí)施例提供的一種動(dòng)態(tài)分配編譯機(jī)的系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0020]請(qǐng)參閱圖1,圖1是本發(fā)明實(shí)施例提供的一種動(dòng)態(tài)分配編譯機(jī)的方法的流程圖。如圖1所示,本實(shí)施例的方法包括以下步驟:
[0021]步驟S1:發(fā)起待編譯任務(wù),并將待編譯任務(wù)進(jìn)行存儲(chǔ),進(jìn)而將待編譯任務(wù)標(biāo)示為等待狀態(tài),以等待編譯機(jī)進(jìn)彳丁編譯。
[0022]具體的,預(yù)設(shè)兩個(gè)字段屬性值,分別為auto_flag和wait_flag,其中,auto_flag和wait_flag的值的設(shè)置包括以下兩種情況:
[0023]第一種情況:auto_flag的值為1時(shí)表示該待待任務(wù)處于編譯狀態(tài),即進(jìn)入編譯階段,默認(rèn)為0 ;wait_flag的值為1時(shí)表示該待任務(wù)處于等待狀態(tài),默認(rèn)為0。
[0024]第二種情況:設(shè)置auto_flag的值為0時(shí)表示該待任務(wù)處于編譯狀態(tài),默認(rèn)為1 ;wait_flag的值為0時(shí)表示該待任務(wù)處于等待狀態(tài),默認(rèn)為1。
[0025]本實(shí)施例中,為了方便描述,下文關(guān)于auto_flag和wait_flag的值所代表的含義都將以第一種情況為例說(shuō)明。
[0026]因此本步驟首先將待編譯任務(wù)的auto_f lag