新四季網

增量構建方法及裝置與流程

2023-08-05 23:27:16


本發明涉及軟體開發技術領域,具體而言,涉及一種增量構建方法,還涉及一種增量構建裝置。



背景技術:

隨著軟體規模的擴大和軟體複雜度的提高,在研發過程中儘快的獲得最新的開發修改並進行驗證,變得越發重要。傳統以全量構建、打包、安裝(部署)、提供給測試驗證的方式存在以下缺點:

1.通常上百人或者更大規模的研發團隊,每天能有數百次的提交,如果每個版本進行全量構建、打包、安裝(部署),就要數百小時甚至更多;

2.按計劃按固定時間間隔進行全量打包的方式,無法剝離安裝包中錯誤提交;

3.以手工開發本地構建,發布增量替換文件給測試驗證的方式,無法保證開發本地構建替換文件時的編譯構建環境和構建伺服器的構建環境一致,無法保證開發本地構建替換文件時的代碼最終會提交到代碼倉庫;

4.開發提交代碼後,通過構建伺服器,更新相關的工程(項目)最新代碼並進行構建,發布增量替換文件給測試的方式,會帶入其他開發新的提交,可能帶入新的問題;

5.開發提交代碼後,通過構建伺服器,更新相關的工程(項目)指定版本並行構建,發布增量替換文件給測試的方式,可能造成少選工程或者多選工程,導致修改的代碼和替換文件不一致;

6.4和5兩種情況,無法準確的識別依賴組件的變更,會產生組件不兼容,或者工程依賴的組件未更新的情況。

因此,如何針對每次提交的變更集進行增量構建、打包、安裝(部署),並提供給測試驗證,以規避上述缺陷,成為目前亟待解決的問題。



技術實現要素:

本發明旨在至少解決現有技術或相關技術中存在的技術問題之一。

為此,本發明的一個目的在於提出了一種增量構建方法。

本發明的另一個目的在於提出了一種增量構建裝置。

有鑑於此,本發明提出了一種增量構建方法,包括:定義構建任務的類型及其相應的執行順序;獲取構建任務的變更集;將構建任務的變更集按照執行順序進行排序,生成構建任務列表;根據構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包。

根據本發明的增量構建方法,通過定義構建任務的類型及其相應的執行順序,在識別構建任務的變更集之後,能夠自動生成構建任務列表,基於生成的構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包,從而實現快速、準確的構建增量包,減少了開發與測試之間的問題反覆以及可能影響產品質量的因素,提升了產品研發效率以及補丁包的發布頻度。

另外,根據本發明上述的增量構建方法,還可以具有如下附加的技術特徵:

在上述技術方案中,優選地,獲取構建任務的變更集,具體包括:每次代碼修改完畢後,在提交日誌中生成問題編號(issue_id),構建問題列表(issue_id列表);將發布通過的問題列表的相關代碼更新到代碼基準庫;編譯相關代碼,將編譯中間產物更新到編譯環境基準庫;根據問題列表,從代碼基準庫中查找出與問題編號相關聯的提交列表(commit列表);讀取提交列表中的變更集。

在該技術方案中,產品研發過程中,開發完成某個新功能或者修復完某個bug(漏洞),通過在提交日誌中輸入問題編號(issue_id),能夠快速構建出問題列表(issue_id列表),增加了增量構建的靈活性,例如,可以將issue_a、issue_b、issue_c一起構建,如果中途發現issue_b的修復有問題,在issue_b和[issue_a、issue_c]變更集無交集的情況下,可將issue_b剝離,重新構建issue_a和issue_c;通過將發布通過的問題列表對應的相關代碼更新到代碼基準庫,以及將編譯中間產物更新到編譯環境基準庫,以增強軟體的可維護性,防止後續出現的問題;通過從代碼基準庫中查找出與問題編號相關聯的提交列表(commit列表),能夠自動識別變更集,避免了遺漏增量文件和髒代碼的帶入。

在上述任一技術方案中,優選地,執行順序包括:不同類型的構建任務的執行順序、相同類型的構建任務的執行順序。

在該技術方案中,構建任務的執行順序包括不同類型的構建任務的執行順序以及相同類型的構建任務的執行順序,通過對構建任務的執行順序進行定義,自動識別變更集,推導出構建任務列表的方式,避免了遺漏增量文件和髒代碼的帶入,同時也提升了構建增量的速度,進而提升提升了產品研發效率以及補丁包的發布頻度。

在上述任一技術方案中,優選地,構建任務的類型包括以下至少任一項或其組合:資料庫腳本、工程、網頁。

在該技術方案中,本領域技術人員應該理解,構建任務的類型包括以下至少任一項或其組合:資料庫腳本、工程、網頁,但不限於此。優選地,當構建任務為以上三種類型並存時,執行順序為資料庫腳本、工程、網頁。

在上述任一技術方案中,優選地,當構建任務的類型為資料庫腳本時,包括系統庫腳本、模板庫腳本、升級腳本;當構建任務的類型為工程時,包括工程的依賴關係。

在該技術方案中,本領域技術人員應該理解,當構建任務的類型為資料庫腳本時,資料庫腳本包括系統庫腳本、模板庫腳本、升級腳本,但不限於此。優選地,當以上三種資料庫腳本並存時,執行順序為系統庫腳本、模板庫腳本、升級腳本。當構建任務的類型為工程時,根據工程的依賴關係排序並依次執行。

本發明還提出一種增量構建裝置,包括:設置單元,用於定義構建任務的類型及其相應的執行順序;獲取單元,用於獲取構建任務的變更集;增量構建單元,用於將構建任務的變更集按照執行順序進行排序,生成構建任務列表;增量構建單元,還用於根據構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包。

根據本發明的增量構建裝置,通過定義構建任務的類型及其相應的執行順序,在識別構建任務的變更集之後,能夠自動生成構建任務列表,基於生成的構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包,從而實現快速、準確的構建增量包,減少了開發與測試之間的問題反覆以及可能影響產品質量的因素,提升了產品研發效率以及補丁包的發布頻度。

另外,根據本發明上述的增量構建裝置,還可以具有如下附加的技術特徵:

在上述技術方案中,優選地,獲取單元具體包括:問題列表生成單元,用於每次代碼修改完畢後,在提交日誌中生成問題編號(issue_id),構建問題列表(issue_id列表);代碼更新單元,用於將發布通過的問題列表的相關代碼更新到代碼基準庫;編譯更新單元,用於編譯相關代碼,將編譯中間產物更新到編譯環境基準庫;查找單元,用於根據問題列表,從代碼基準庫中查找出與問題編號相關聯的提交列表(commit列表);讀取單元,用於讀取提交列表中的變更集。

在該技術方案中,產品研發過程中,開發完成某個新功能或者修復完某個bug(漏洞),通過在提交日誌中輸入問題編號(issue_id),能夠快速構建出問題列表(issue_id列表),增加了增量構建的靈活性,例如,可以將issue_a、issue_b、issue_c一起構建,如果中途發現issue_b的修復有問題,在issue_b和[issue_a、issue_c]變更集無交集的情況下,可將issue_b剝離,重新構建issue_a和issue_c;通過將發布通過的問題列表對應的相關代碼更新到代碼基準庫,以及將編譯中間產物更新到編譯環境基準庫,以增強軟體的可維護性,防止後續出現的問題;通過從代碼基準庫中查找出與問題編號相關聯的提交列表(commit列表),能夠自動識別變更集,避免了遺漏增量文件和髒代碼的帶入。

在上述任一技術方案中,優選地,執行順序包括:不同類型的構建任務的執行順序、相同類型的構建任務的執行順序。

在該技術方案中,構建任務的執行順序包括不同類型的構建任務的執行順序以及相同類型的構建任務的執行順序,通過對構建任務的執行順序進行定義,自動識別變更集,推導出構建任務列表的方式,避免了遺漏增量文件和髒代碼的帶入,同時也提升了構建增量的速度,進而提升提升了產品研發效率以及補丁包的發布頻度。

在上述任一技術方案中,優選地,構建任務的類型包括以下至少任一項或其組合:資料庫腳本、工程、網頁。

在該技術方案中,本領域技術人員應該理解,構建任務的類型包括以下至少任一項或其組合:資料庫腳本、工程、網頁,但不限於此。優選地,當構建任務為以上三種類型並存時,執行順序為資料庫腳本、工程、網頁。

在上述任一技術方案中,優選地,當構建任務的類型為資料庫腳本時,包括系統庫腳本、模板庫腳本、升級腳本;當構建任務的類型為工程時,包括工程的依賴關係。

在該技術方案中,本領域技術人員應該理解,當構建任務的類型為資料庫腳本時,資料庫腳本包括系統庫腳本、模板庫腳本、升級腳本,但不限於此。優選地,當以上三種資料庫腳本並存時,執行順序為系統庫腳本、模板庫腳本、升級腳本。當構建任務的類型為工程時,根據工程的依賴關係排序並依次執行。

本發明的附加方面和優點將在下面的描述部分中變得明顯,或通過本發明的實踐了解到。

附圖說明

本發明的上述和/或附加的方面和優點從結合下面附圖對實施例的描述中將變得明顯和容易理解,其中:

圖1示出了本發明一實施例的增量構建方法的流程示意圖;

圖2示出了本發明再一實施例的增量構建方法的流程示意圖;

圖3示出了本發明一實施例的增量構建裝置的示意框圖;

圖4示出了本發明再一實施例的增量構建裝置的示意框圖。

具體實施方式

為了能夠更清楚地理解本發明的上述目的、特徵和優點,下面結合附圖和具體實施方式對本發明進行進一步的詳細描述。需要說明的是,在不衝突的情況下,本申請的實施例及實施例中的特徵可以相互組合。

在下面的描述中闡述了很多具體細節以便於充分理解本發明,但是,本發明還可以採用其他不同於在此描述的其他方式來實施,因此,本發明的保護範圍並不受下面公開的具體實施例的限制。

如圖1所示,根據本發明一實施例的增量構建方法的流程示意圖:

步驟102,定義構建任務的類型及其相應的執行順序;

步驟104,獲取構建任務的變更集;

步驟106,將構建任務的變更集按照執行順序進行排序,生成構建任務列表;

步驟108,根據構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包。

在該實施例中,通過定義構建任務的類型及其相應的執行順序,在識別構建任務的變更集之後,能夠自動生成構建任務列表,基於生成的構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包,從而實現快速、準確的構建增量包,減少了開發與測試之間的問題反覆以及可能影響產品質量的因素,提升了產品研發效率以及補丁包的發布頻度。

如圖2所示,根據本發明再一實施例的增量構建方法的流程示意圖:

步驟202,定義構建任務的類型及其相應的執行順序;

步驟204,獲取構建任務的變更集;

步驟206,將構建任務的變更集按照執行順序進行排序,生成構建任務列表;

步驟208,根據構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包;

其中,步驟204具體包括:

步驟2042,每次代碼修改完畢後,在提交日誌中生成問題編號(issue_id),構建問題列表(issue_id列表);

步驟2044,將發布通過的問題列表的相關代碼更新到代碼基準庫;編譯相關代碼,將編譯中間產物更新到編譯環境基準庫;

步驟2046,根據問題列表,從代碼基準庫中查找出與問題編號相關聯的提交列表(commit列表);讀取提交列表中的變更集。

在該實施例中,產品研發過程中,開發完成某個新功能或者修復完某個bug(漏洞),通過在提交日誌中輸入問題編號(issue_id),能夠快速構建出問題列表(issue_id列表),增加了增量構建的靈活性,例如,可以將issue_a、issue_b、issue_c一起構建,如果中途發現issue_b的修復有問題,在issue_b和[issue_a、issue_c]變更集無交集的情況下,可將issue_b剝離,重新構建issue_a和issue_c;通過將發布通過的問題列表對應的相關代碼更新到代碼基準庫,以及將編譯中間產物更新到編譯環境基準庫,以增強軟體的可維護性,防止後續出現的問題;通過從代碼基準庫中查找出與問題編號相關聯的提交列表(commit列表),能夠自動識別變更集,避免了遺漏增量文件和髒代碼的帶入。

在上述任一實施例中,優選地,執行順序包括:不同類型的構建任務的執行順序、相同類型的構建任務的執行順序。

在該實施例中,構建任務的執行順序包括不同類型的構建任務的執行順序以及相同類型的構建任務的執行順序,通過對構建任務的執行順序進行定義,自動識別變更集,推導出構建任務列表的方式,避免了遺漏增量文件和髒代碼的帶入,同時也提升了構建增量的速度,進而提升提升了產品研發效率以及補丁包的發布頻度。

在上述任一實施例中,優選地,構建任務的類型包括以下至少任一項或其組合:資料庫腳本、工程、網頁。

在該實施例中,本領域技術人員應該理解,構建任務的類型包括以下至少任一項或其組合:資料庫腳本、工程、網頁,但不限於此。優選地,當構建任務為以上三種類型並存時,執行順序為資料庫腳本、工程、網頁。

在上述任一實施例中,優選地,當構建任務的類型為資料庫腳本時,包括系統庫腳本、模板庫腳本、升級腳本;當構建任務的類型為工程時,包括工程的依賴關係。

在該實施例中,本領域技術人員應該理解,當構建任務的類型為資料庫腳本時,資料庫腳本包括系統庫腳本、模板庫腳本、升級腳本,但不限於此。優選地,當以上三種資料庫腳本並存時,執行順序為系統庫腳本、模板庫腳本、升級腳本。當構建任務的類型為工程時,根據工程的依賴關係排序並依次執行。

如圖3所示,根據本發明一實施例的增量構建裝置的示意框圖:該裝置包括:

設置單元302,用於定義構建任務的類型及其相應的執行順序;

獲取單元304,用於獲取構建任務的變更集;

增量構建單元306,用於將構建任務的變更集按照執行順序進行排序,生成構建任務列表;

增量構建單元306,還用於根據構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包。

在該實施例中,通過定義構建任務的類型及其相應的執行順序,在識別構建任務的變更集之後,能夠自動生成構建任務列表,基於生成的構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包,從而實現快速、準確的構建增量包,減少了開發與測試之間的問題反覆以及可能影響產品質量的因素,提升了產品研發效率以及補丁包的發布頻度。

如圖4所示,根據本發明再一實施例的增量構建裝置的示意框圖:該裝置包括:

設置單元402,用於定義構建任務的類型及其相應的執行順序;

獲取單元404,用於獲取構建任務的變更集;

增量構建單元406,用於將構建任務的變更集按照執行順序進行排序,生成構建任務列表;

增量構建單元406,還用於根據構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包;

其中,獲取單元404具體包括:

問題列表生成單元4042,用於每次代碼修改完畢後,在提交日誌中生成問題編號(issue_id),構建問題列表(issue_id列表);

代碼更新單元4044,用於將發布通過的問題列表的相關代碼更新到代碼基準庫;

編譯更新單元4046,用於編譯相關代碼,將編譯中間產物更新到編譯環境基準庫;

查找單元4048,用於根據問題列表,從代碼基準庫中查找出與問題編號相關聯的提交列表(commit列表);

讀取單元4050,用於讀取提交列表中的變更集。

在該實施例中,產品研發過程中,開發完成某個新功能或者修復完某個bug(漏洞),通過在提交日誌中輸入問題編號(issue_id),能夠快速構建出問題列表(issue_id列表),增加了增量構建的靈活性,例如,可以將issue_a、issue_b、issue_c一起構建,如果中途發現issue_b的修復有問題,在issue_b和[issue_a、issue_c]變更集無交集的情況下,可將issue_b剝離,重新構建issue_a和issue_c;通過將發布通過的問題列表對應的相關代碼更新到代碼基準庫,以及將編譯中間產物更新到編譯環境基準庫,以增強軟體的可維護性,防止後續出現的問題;通過從代碼基準庫中查找出與問題編號相關聯的提交列表(commit列表),能夠自動識別變更集,避免了遺漏增量文件和髒代碼的帶入。

在上述任一實施例中,優選地,執行順序包括:不同類型的構建任務的執行順序、相同類型的構建任務的執行順序。

在該實施例中,構建任務的執行順序包括不同類型的構建任務的執行順序以及相同類型的構建任務的執行順序,通過對構建任務的執行順序進行定義,自動識別變更集,推導出構建任務列表的方式,避免了遺漏增量文件和髒代碼的帶入,同時也提升了構建增量的速度,進而提升提升了產品研發效率以及補丁包的發布頻度。

在上述任一實施例中,優選地,構建任務的類型包括以下至少任一項或其組合:資料庫腳本、工程、網頁。

在該實施例中,本領域技術人員應該理解,構建任務的類型包括以下至少任一項或其組合:資料庫腳本、工程、網頁,但不限於此。優選地,當構建任務為以上三種類型並存時,執行順序為資料庫腳本、工程、網頁。

在上述任一實施例中,優選地,當構建任務的類型為資料庫腳本時,包括系統庫腳本、模板庫腳本、升級腳本;當構建任務的類型為工程時,包括工程的依賴關係。

在該實施例中,本領域技術人員應該理解,當構建任務的類型為資料庫腳本時,資料庫腳本包括系統庫腳本、模板庫腳本、升級腳本,但不限於此。優選地,當以上三種資料庫腳本並存時,執行順序為系統庫腳本、模板庫腳本、升級腳本。當構建任務的類型為工程時,根據工程的依賴關係排序並依次執行。

具體實施例,暢捷通tplus產品,在產品研發過程中,開發完成某個新功能/修復完某個bug,或者在產品發布後,針對用戶在使用過程中提出的缺陷,開發完成bug修復,按照變更集構建增量包,步驟如下:

首先,定義構建任務的類型、定義不同類型的構建任務執行順序、定義相同類型的構建任務的執行順序,如表1、2所示:

表1構建任務類型及執行順序

表2定義源碼目錄對應構建任務的關係

其次,開發在提交代碼時,在提交日誌中輸入issue_id,生成[issue_id列表];

具體的構建[issue_id列表]的增量包的過程如下:

a.維護代碼基準、編譯環境基準

將已經發布通過的[issue_id列表]相關代碼更新到代碼基準、編譯中間產物更新到編譯環境基準;

b.識別[issue_id列表]的變更集

根據[issue_id列表]從代碼倉庫中找到對應的commit列表,讀取commit列表中的變更集;

c.根據[issue_id列表]的變更集,通過,推導出[構建任務列表];

d.根據,對[構建任務列表]排序,得到[排序後的構建任務列表];

e.根據[排序後的構建任務列表]創建[編譯環境];

f.按順序執行[排序後的構建任務列表],將編譯輸出的文件打成[增量包]。

在該實施例中,過定義構建任務的類型及其相應的執行順序,在識別構建任務的變更集之後,能夠自動生成構建任務列表,基於生成的構建任務列表創建編譯環境,並依次進行編譯,將編譯輸出文件壓縮成增量包,從而實現快速、準確的構建增量包,減少了開發與測試之間的問題反覆以及可能影響產品質量的因素,提升了產品研發效率以及補丁包的發布頻度。

以上所述僅為本發明的優選實施例而已,並不用於限制本發明,對於本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀