一種代碼編譯方法、設備及系統與流程
2023-05-09 21:09:56

本發明的實施例涉及數據通信領域,尤其涉及雲編譯環境下的一種代碼編譯方法、設備及系統。
背景技術:
在雲編譯環境中,軟體開發過程中下載鏡像文件到設備之前的所有工作,包括代碼的下載,代碼的編輯,代碼的編譯,生成鏡像文件。且該環境中對代碼的編輯和代碼的編譯在兩個不同的機器上進行,這樣的一個環境即所謂的雲編譯環境。在這樣的雲編譯環境中,因為代碼的編輯和代碼的編譯在不同的機器上進行,必然存在一個如何將兩邊機器上的代碼同步的問題。
雲編譯中有一個非常重要的功能就是將處於編輯機器a上的代碼和編譯機器b上的代碼同步。目前已知的解決方案是通過將修改的所有代碼,完全拷貝到遠程編譯機器上,然後進行編譯。
參照圖1所示,現有技術提供一種代碼同步方法簡要流程如下:
步驟1、代碼編譯機器a下載代碼;
步驟2、代碼編譯機器a編輯代碼(包括修改或者增加刪除代碼);
步驟3、代碼編譯機器a將編輯後的代碼文件拷貝到編譯機器b上;
步驟4、編譯機器b發起一次編譯,生成最終結果鏡像文件。
上述方案雖然實現了遠程編譯的功能時,若進行代碼文件修改,拷貝的數量量將會非常多,效率低下。
技術實現要素:
本發明的實施例提供一種代碼編譯方法、設備及系統,能夠提高代碼編譯效率。
第一方面,本發明的實施例提供一種代碼編譯方法,應用於雲編譯環境,其特徵在於,包括:
代碼編輯設備從代碼伺服器下載代碼;
所述代碼編輯設備對所述代碼進行編輯;
所述代碼編輯設備提取對所述代碼編輯過程中已發生更改的代碼,並根據將所述已發生更改的代碼生成代碼補丁;
所述代碼編輯設備將所述代碼補丁發送至代碼編譯設備;
所述代碼編譯設備根據所述代碼補丁,對所述代碼執行補丁操作後,完成本地編譯。
結合第一方面,在第一種可能的實現方式中,所述代碼編輯設備將所述代碼補丁發送至代碼編譯設備前,還包括:
所述代碼編輯設備向所述代碼編譯設備發送請編譯請求,所述編譯請求用於解析所述代碼補丁,其中所述編譯請求為根據預設請求協議生成。
結合第一方面的第一種可能的實現方式,在第二種可能的實現方式中,所述代碼編譯設備根據所述代碼補丁,對所述代碼執行補丁操作後,完成本地編譯,具體包括:
所述代碼編譯設備接收來自所述代碼編輯設備的所述編譯請求,根據所述編譯請求設置配置編譯相關參數,並從代碼伺服器下載所述代碼;
所述代碼編譯設備接收來自所述代碼編輯設備的所述代碼補丁,根據所述代碼補丁,對從代碼伺服器下載的所述代碼進行補丁操作後,完成本地編譯。
結合第一方面的第二種可能的實現方式,所述編譯請求包括的協議欄位至少包括如下的一項或多項:用戶名、產品名稱、工程分支、操作類型、庫文件路徑、代碼補丁路徑、代碼補丁更新方式和代碼補丁列表。
結合第一方面或第一方面中的任意一種可能的實現方式,在第三種可能的實現方式中,所述代碼補丁包括至少一個子補丁和對應每個子補丁的補丁狀態信息,其中補丁狀態信息用於指示對應的子補丁的可修改狀態。
第二方面,提供一種代碼編輯設備,應用於雲編譯環境,包括:
下載單元,用於從代碼伺服器下載代碼;
編輯單元,用於對所述下載單元下載的所述代碼進行編輯;
補丁生成單元,用於提取對所述代碼中編輯過程中的已發生更改的代碼,並將所述已發生更改的代碼生成代碼補丁;
發送單元,用於將所述補丁生成單元生成的代碼補丁發送至代碼編譯設備。
結合第二方面,在第一種可能的實現方式中,
所述發送單元還用於向所述代碼編譯設備發送編譯請求,所述編譯請求用於解析所述代碼補丁,其中所述編譯請求為根據預設請求協議生成。
第三方面,提供一種代碼編譯設備,應用於雲編譯環境,
接收單元,用於接收代碼編輯設備發送的代碼補丁,其中所述代碼補丁為代碼編輯設備在代碼中編輯過程中提取的已發生更改的代碼生成;
編譯單元,用於根據所述代碼補丁,對所述代碼執行補丁操作後,完成本地編譯。
結合第三方面,在第一種可能的實現方式中,
所述接收單元,還用於接收所述代碼編輯設備發送的編譯請求,並從代碼伺服器下載所述代碼,所述編譯請求用於解析所述代碼補丁,其中所述編譯請求為根據預設請求協議生成;
和/或,
所述編譯單元具體用於根據所述請求協議設置配置編譯相關參數;在根據所述代碼補丁,對從代碼伺服器下載的所述代碼進行補丁操作後,完成本地編譯。
第四方面,提供一種代碼編譯系統,包括代碼伺服器、如第二方面所述的任意一種代碼編輯設備,以及如第三方面所述的任意一種代碼編譯設備;
所述代碼伺服器用於保存已編譯通過的代碼。
本發明的實施例提供的代碼編譯方法、設備及系統,應用於雲編譯環境,其中代碼編輯設備具體能夠從代碼伺服器下載代碼;並對所述代碼進行編輯;之後提取對所述代碼中編輯過程中已發生更改的代碼,並將所述已發生更改的代碼生成代碼補丁;再將所述代碼補丁發送至代碼編譯設備,使得代碼編譯設備根據所述代碼補丁,對所述代碼執行補丁操作後,完成本地編譯;在上述方案中由於僅需將代碼的編輯過程中已發生更改的代碼通過代碼補丁的形式發送至代碼編譯設備,而無需每次都將所有的代碼發送至代碼編譯設備,可以能夠提高代碼編譯效率。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明的實施例提供的一種雲編譯環境的代碼編譯系統的組成設備結構示意圖;
圖2為本發明的實施例提供的一種代碼編譯方法的流程示意圖;
圖3為本發明的另一實施例提供的一種代碼編譯方法的流程示意圖;
圖4為本發明的實施例提供的編譯請求包括的協議欄位的結構示意圖;
圖5為本發明的實施例提供的子補丁的狀態機變化示意圖;
圖6為本發明的實施例提供的代碼編輯設備的結構示意圖;
圖7為本發明的實施例提供的代碼編譯設備的結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
參照圖1所示,本發明的實施例應用於如圖1所示雲編譯環境的代碼編譯系統,本發明的實施例所述的雲編譯環境為在軟體開發中代碼編輯和代碼編譯分屬不同設備的開發環境;本發明的實施例提供代碼編譯系統包括代碼伺服器server、代碼編輯設備zd1和代碼編譯設備zd2,其中代碼伺服器server用於存儲軟體開發過程中使用的代碼即保存已編譯通過的代碼,代碼編輯設備zd1主要用於代碼的下載和代碼的編輯,代碼編譯設備zd2主要用於代碼的編譯和鏡像文件生成,這裡的鏡像文件為軟體經由代碼編譯後生成用於最終下載到設備上運行的文件。
參照圖2所示,本發明的實施例提供一種代碼編譯方法,應用於上述的雲編譯環境,包括:
101、代碼編輯設備從代碼伺服器下載代碼;
102、所述代碼編輯設備對所述代碼進行編輯;
103、所述代碼編輯設備提取對所述代碼編輯過程中已發生更改的代碼,並根據所述已發生更改的代碼生成代碼補丁;
104、所述代碼編輯設備將所述代碼補丁發送至代碼編譯設備。
具體步驟104可以為碼編輯設備經由代碼伺服器將代碼補丁發送至代碼編譯設備,即代碼編輯設備將代碼補丁上傳至代碼伺服器,並由代碼編譯設備根據代碼補丁的路徑按需下載。
105、所述代碼編譯設備根據所述代碼補丁,對所述代碼執行補丁操作後,完成本地編譯。
本發明的實施例提供的代碼編譯方法,應用於雲編譯環境,其中代碼編輯設備具體能夠從代碼伺服器下載代碼;並對所述代碼進行編輯;之後提取對所述代碼中編輯過程中已發生更改的代碼,並將所述已發生更改的代碼生成代碼補丁;再將所述代碼補丁發送至代碼編譯設備,使得代碼編譯設備根據所述代碼補丁,對所述代碼執行補丁操作後,完成本地編譯;在上述方案中由於僅需將代碼的編輯過程中已發生更改的代碼通過代碼補丁的形式發送 至代碼編譯設備,而無需每次都將所有的代碼發送至代碼編譯設備,可以能夠提高代碼編譯效率。
參照圖3所示,本發明的另一實施例提供的一種代碼編譯方法,應用於上述的雲編譯環境,包括:
201、代碼編輯設備從代碼伺服器下載代碼;
202、所述代碼編輯設備對所述代碼進行編輯;
203、所述代碼編輯設備提取對所述代碼編輯過程中已發生更改的代碼,並根據所述已發生更改的代碼生成代碼補丁;
其中,代碼補丁包括至少一個子補丁和對應每個子補丁的補丁狀態信息,其中補丁狀態信息用於指示對應的子補丁的可修改狀態。
由於代碼補丁包括至少一個子補丁和對應每個子補丁的補丁狀態信息,其中補丁狀態信息用於指示對應的子補丁的可修改狀態。因此,在生成代碼補丁c後,代碼補丁c是由多個子補丁d構成的。多個子補丁d中包括:一種是需要多次修改的子補丁,另一種是只修改一次的子補丁。在對代碼進行編輯時,例如,對代碼進行修改,通過指定修改的代碼的文件路徑將修改的代碼和代碼的原始狀態對比,生成子補丁文件d,然後將子補丁d追加到代碼補丁c中。並將子補丁d的可修改狀態寫入補丁狀態信息中。補丁狀態信息可以被設計為一個原始狀態為空的文件,補丁狀態信息修改後也生成一個代碼補丁覆蓋到代碼補丁c中。因此即使修改眾多的文件,只需要指定文件路徑後,所有的已發生更改的代碼都集中到代碼補丁c中。接收設備在接收到代碼補丁c以後,統一處理。
補丁狀態信息因為存儲了對應的子補丁的生成狀態,傳送到接收設備以後就會根據這個狀態進行判斷,如果是只需要修改一次的子補丁,將會在以後多次編譯中,都不去更新這個子補丁文件,從而減少一些不必要編譯。而且補丁狀態信息也存儲了對代碼編譯設備中當前修改了哪些代碼,有哪些代碼使用的第一次修改的,哪些代碼在每次編譯中需要更新,從而也知道了多 次編譯之後對,代碼編譯設備上的代碼的文件狀態,並根據這個補丁狀態信息可以將修改的代碼恢復到原始的狀態。
這樣以補丁的方式解決了修改眾多文件,帶來的拷貝文件的效率低下問題。同時,在代碼審查時可以僅對代碼補丁文件進行審查,避免了審查修改時需要提供全部代碼造成的代碼洩露。
204、所述代碼編輯設備向所述代碼編譯設備發送編譯請求。
所述編譯請求用於解析所述代碼補丁,其中所述編譯請求為根據預設請求協議生成。其中,為實現代碼編輯設備和代碼編譯設備編譯之間代碼的同步,本發明定義了一個用於代碼補丁交互的請求協議,該協議通過定義代碼編輯設備和代碼編譯設備之間代碼同步的方式,進行工作。如圖4所示,編譯請求包括的協議欄位至少包括如下的一項或多項:用戶名、產品名稱、工程分支、操作類型、庫文件路徑、代碼補丁路徑、代碼補丁更新方式和代碼補丁列表。
所述編譯請求中,各個協議欄位含義如下:
用戶名,用於指定在代碼編譯設備上使用的登錄帳戶;
產品名,用於指定在代碼編譯設備上進行編譯的產品;
工程分支,用於指定在代碼編譯設備上使用的工程分支;
操作類型,用於指定在代碼編譯設備上進行的操作;
庫文件路徑,用於指定在代碼編譯設備上編譯所使用的路徑。其中庫文件的作用是將代碼編輯設備和代碼編譯設備所使用的原始代碼保證一致。具體的,在庫中存儲了代碼編輯設備和代碼編譯設備兩者所使用的代碼的版本。
代碼補丁路徑,用於指定代碼補丁上傳的路徑,供代碼編譯設備從指定路徑下載補丁。代碼補丁更新方式,用於指定代碼補丁使用的更新方式。根據用戶不同的需求,更新方式包括:本次不更新,下次不更新,本次更新三種情況。
代碼補丁列表,用於指定本次編譯包含的所有代碼補丁的列表。
205、所述代碼編輯設備將所述代碼補丁發送至代碼編譯設備。
206、代碼編譯設備接收代碼編輯設備發送的代碼補丁,其中所述代碼補丁為代碼編輯設備在代碼編輯過程中提取的已發生更改的代碼生成;
207、所述代碼編譯設備接收所述代碼編輯設備發送的編譯請求;並從代碼伺服器下載所述代碼,所述編譯請求用於解析所述代碼補丁,其中所述編譯請求為根據預設請求協議生成;
208、所述代碼編譯設備根據所述編譯請求設置配置編譯相關參數;
209、根據所述代碼補丁,對從代碼伺服器下載的所述代碼進行補丁操作後,完成本地編譯。
具體的,步驟209為所述代碼編譯設備在所述代碼補丁中獲取已發生更改的代碼,並根據所述已發生更改的代碼對在代碼伺服器下載的代碼進行編譯,生成鏡像文件。
在步驟207中代碼編譯設備收到編譯請求後,根據預設的請求協議,解析編譯請求,並在步驟208中配置編譯相關的參數,做好相應的預處理準備,在步驟209中根據代碼補丁的屬性,將代碼補丁中的已發生更改的代碼進行增加、刪除、合併、清除、回退等處理。
在流程的步驟205中,具體可以為代碼編輯設備經由代碼伺服器將代碼補丁發送至代碼編譯設備,具體的代碼編譯設備可以根據用戶名,產品名,工程分支定位到代碼編譯設備上面代碼所在的路徑。根據操作類型和庫文件路徑準備代碼編譯設備的編譯環境。並根據代碼補丁路徑欄位,使用常用網絡傳輸方法(如tftp)從指定路徑下載代碼補丁。獲取代碼補丁後,根據代碼補丁更新方式,判斷本次對所有補丁處理狀態後,依據代碼補丁列表存儲的補丁列表文件的名字進行處理。
在上述方法中,代碼編譯設備獲取到代碼補丁c以後,將代碼補丁c分拆為多個子補丁d,然後對每個子補丁d進行處理。
子補丁d的狀態按照圖5的狀態機進行變化:
初始狀態是新增狀態,判斷該子補丁(patch)d是否在上一次不清除列表中,如果在不清除列表中,則進入不清除狀態。否則,進入待打入狀態,如果本次子補丁(patch)d在補丁狀態信息中被設置為不清除(即為不清除文件),則子補丁(patch)d被設置為不清除狀態,否則進入打入狀態。打入結束後,如果在不清除列表中,則進入不清除狀態。否則,進入待清除狀態。最後待清除狀態編譯為清除狀態。
本發明的實施例提供的代碼編譯方法,應用於雲編譯環境,其中代碼編輯設備具體能夠從代碼伺服器下載代碼;並對所述代碼進行編輯;之後提取對所述代碼編輯過程中已發生更改的代碼,並根據所述已發生更改的代碼生成代碼補丁;再將所述代碼補丁發送至代碼編譯設備,使得代碼編譯設備根據所述代碼補丁,對所述代碼執行補丁操作後,完成本地編譯;在上述方案中由於僅需將代碼的編輯過程中已發生更改的代碼通過代碼補丁的形式發送至代碼編譯設備,而無需每次都將所有的代碼發送至代碼編譯設備,可以能夠提高代碼編譯效率。
參照圖6所示,本發明的實施例提供一種代碼編輯設備,應用於雲編譯環境,用於實施上述的代碼同步方法,包括:
下載單元61,用於從代碼伺服器下載代碼;
編輯單元62,用於對所述下載單元下載的所述代碼進行編輯;
補丁生成單元63,用於提取對所述代碼中編輯過程中已發生更改的代碼,並根據所述已發生更改的代碼生成代碼補丁;
發送單元64,用於將所述補丁生成單元生成的代碼補丁發送至代碼編譯設備。
其中,可選的所述發送單元64還用於向所述代碼編譯設備發送編譯請求,所述編譯請求用於解析所述代碼補丁,其中所述編譯請求為根據預設請求協議生成。
本發明的實施例提供的代碼編輯設備,應用於雲編譯環境,其中代碼編輯設備具體能夠從代碼伺服器下載代碼;並對所述代碼進行編輯;之後提取對所述代碼編輯過程中已發生更改的代碼,並根據所述已發生更改的代碼生成代碼補丁;再將所述代碼補丁發送至代碼編譯設備,使得代碼編譯設備根據所述代碼補丁,對所述代碼執行補丁操作後,完成本地編譯;在上述方案中由於僅需將代碼編輯過程中已發生更改的代碼通過代碼補丁的形式發送至代碼編譯設備,而無需每次都將所有的代碼發送至代碼編譯設備,可以能夠提高代碼編譯效率。
參照圖7所示,本發明的實施例提供一種代碼編譯設備,應用於雲編譯環境,用於實施上述的代碼同步方法,包括:
接收單元71,用於接收代碼編輯設備發送的代碼補丁,其中所述代碼補丁為代碼編輯設備在代碼中提取的編輯過程中提取的已發生更改的代碼生成;
編譯單元72,用於根據所述代碼補丁,對所述代碼執行補丁操作後,完成本地編譯。
可選的,所述接收單元71,還用於接收所述代碼編輯設備發送的編譯請求,並從代碼伺服器下載所述代碼,所述編譯請求用於解析所述代碼補丁,其中所述編譯請求為根據預設請求協議生成;
和/或,
所述編譯單元具體用於根據所述編譯請求設置配置編譯相關參數;根據所述代碼補丁,對從代碼伺服器下載的所述代碼進行補丁操作後,完成本地編譯。
本發明的實施例提供的代碼編譯設備,應用於雲編譯環境,其中由於代碼編輯設備具體能夠從代碼伺服器下載代碼;並對所述代碼進行編輯;之後提取對所述代碼編輯過程中已發生更改的代碼,並將所述已發生更改的代碼生成代碼補丁;再將所述代碼補丁發送至代碼編譯設備,因此代碼編譯設備 根據所述代碼補丁,對所述代碼執行補丁操作後,完成本地編譯;在上述方案中由於僅需將代碼編輯過程中已發生更改的代碼通過代碼補丁的形式發送至代碼編譯設備,而無需每次都將所有的代碼發送至代碼編譯設備,可以能夠提高代碼編譯效率。
應理解,在本發明的各種實施例中,上述各過程的序號的大小並不意味著執行順序的先後,各過程的執行順序應以其功能和內在邏輯確定,而不應對本發明實施例的實施過程構成任何限定。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
以上所述,僅為本發明的具體實施方式,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應以所述權利要求的保護範圍為準。