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