1.一種golang軟件包自動(dòng)修復(fù)cve漏洞的方法,其特征在于,包括下述步驟:在使用rpm包管理器和obs編譯系統(tǒng)的linux發(fā)行版中通過引入的標(biāo)簽機(jī)制維護(hù)管理golang軟件包的版本標(biāo)簽值,在引入新golang軟件包、golang軟件包版本升級以及修復(fù)golang軟件的cve漏洞時(shí)通過版本標(biāo)簽值的變化使得obs編譯系統(tǒng)自動(dòng)觸發(fā)重新編譯,并將重新編譯的golang軟件包存儲(chǔ)到rpm軟件包倉庫以實(shí)現(xiàn)對golang軟件包的cve漏洞自動(dòng)修復(fù)。
2.根據(jù)權(quán)利要求1所述的golang軟件包自動(dòng)修復(fù)cve漏洞的方法,其特征在于,在使用rpm包管理器和obs編譯系統(tǒng)的linux發(fā)行版中引入的標(biāo)簽機(jī)制包括構(gòu)建rpm包的標(biāo)簽管理宏軟件包,所述rpm包的標(biāo)簽管理宏軟件包包括標(biāo)簽操作宏函數(shù)_golabel、sys子包替換宏函數(shù)_copy_golang_sys、unix子包替換宏函數(shù)_copy_golang_unix、sys_unix子包替換宏函數(shù)_copy_golang_sys_unix和存儲(chǔ)路徑定義宏_golabel_db,其中標(biāo)簽操作宏函數(shù)_golabel用于obs編譯golang軟件包時(shí)讀取標(biāo)簽數(shù)據(jù)庫更新golang軟件包版本號(hào)上的正式發(fā)布版本號(hào)release的值,sys子包替換宏函數(shù)_copy_golang_sys用于被golang軟件包的rpm包的配置文件調(diào)用來替換自帶架構(gòu)適配源碼中的sys子包,unix子包替換宏函數(shù)_copy_golang_unix用于被golang軟件包的rpm包的配置文件調(diào)用來替換自帶架構(gòu)適配源碼中的unix子包,sys_unix子包替換宏函數(shù)_copy_golang_sys_unix用于被golang軟件包的rpm包的配置文件調(diào)用來替換自帶架構(gòu)適配源碼中的sys子包和unix子包,所述存儲(chǔ)路徑定義宏_golabel_db用于定義版本標(biāo)簽值數(shù)據(jù)庫的文件存儲(chǔ)路徑;所述標(biāo)簽機(jī)制還包括:在golang軟件包的配置文件spec中,添加一行標(biāo)簽操作宏函數(shù)_golabel的引用以用于從版本標(biāo)簽值數(shù)據(jù)庫中獲取golang軟件包的版本標(biāo)簽值;在golang軟件包的配置文件spec中,修改軟件包的正式發(fā)布版本號(hào)release的值,將版本標(biāo)簽值數(shù)據(jù)庫中記錄的golang軟件包版本標(biāo)簽值追加到golang軟件包的基礎(chǔ)功能版本號(hào)version的值上,以免去后續(xù)更新golang軟件包的配置文件spec中版本標(biāo)簽值的操作;在構(gòu)建golang軟件包的預(yù)備階段%prep,為目標(biāo)架構(gòu)調(diào)用sys子包替換宏函數(shù)_copy_golang_sys、unix子包替換宏函數(shù)_copy_golang_unix、sys_unix子包替換宏函數(shù)_copy_golang_sys_unix中的部分或者全部以實(shí)現(xiàn)對目標(biāo)架構(gòu)的適配代碼中的sys子包和unix子包的替換。
3.根據(jù)權(quán)利要求2所述的golang軟件包自動(dòng)修復(fù)cve漏洞的方法,其特征在于,所述版本標(biāo)簽值數(shù)據(jù)庫中的每一條記錄包括golang軟件包的軟件包名稱及其對應(yīng)的版本標(biāo)簽值,其中版本標(biāo)簽值為純數(shù)字格式、取值范圍為[1,∞)。
4.根據(jù)權(quán)利要求3所述的golang軟件包自動(dòng)修復(fù)cve漏洞的方法,其特征在于,所述版本標(biāo)簽值數(shù)據(jù)庫存儲(chǔ)在git平臺(tái)上;所述obs編譯系統(tǒng)在構(gòu)建編譯環(huán)境后,從git平臺(tái)上下載版本標(biāo)簽值數(shù)據(jù)庫的數(shù)據(jù)庫文件并存儲(chǔ)到存儲(chǔ)路徑定義宏_golabel_db指定的文件路徑。
5.根據(jù)權(quán)利要求4所述的golang軟件包自動(dòng)修復(fù)cve漏洞的方法,其特征在于,所述通過引入的標(biāo)簽機(jī)制維護(hù)管理golang軟件包的版本標(biāo)簽值包括:版本標(biāo)簽值遞增:當(dāng)golang軟件包完成了sys子包或者unix子包的cve漏洞修復(fù)時(shí),由代碼倉配置的webhook工程對版本標(biāo)簽值數(shù)據(jù)庫中的所有g(shù)olang軟件包的版本標(biāo)簽值執(zhí)行遞增;版本標(biāo)簽值重置:當(dāng)使用golang語言開發(fā)的軟件包升級時(shí),在golang軟件包的基礎(chǔ)功能版本號(hào)version的值或者不含版本標(biāo)簽值的正式發(fā)布版本號(hào)release的值發(fā)生變化的時(shí)候,由代碼倉配置的webhook工程對版本標(biāo)簽值數(shù)據(jù)庫中記錄的該golang軟件包的版本標(biāo)簽值進(jìn)行重置,修改為1;版本標(biāo)簽值新增:當(dāng)引入新的golang語言開發(fā)的golang軟件包時(shí),由代碼倉配置的webhook工程對golang軟件包的配置文件spec做檢測,如果發(fā)現(xiàn)版本標(biāo)簽值的應(yīng)用,則在版本標(biāo)簽值數(shù)據(jù)庫為當(dāng)前軟件包新增版本標(biāo)簽值記錄,且版本標(biāo)簽值的初始值為1。
6.根據(jù)權(quán)利要求1所述的golang軟件包自動(dòng)修復(fù)cve漏洞的方法,其特征在于,所述在引入新golang軟件包、golang軟件包版本升級以及修復(fù)golang軟件的cve漏洞時(shí)通過版本標(biāo)簽值的變化使得obs編譯系統(tǒng)自動(dòng)觸發(fā)重新編譯包括:在golang軟件的cve漏洞修復(fù)時(shí),由代碼倉配置的webhook工程對版本標(biāo)簽值數(shù)據(jù)庫中的所有g(shù)olang軟件包的版本標(biāo)簽值執(zhí)行遞增,由于所有g(shù)olang軟件包的版本標(biāo)簽值執(zhí)行遞增觸發(fā)obs編譯系統(tǒng)對版本標(biāo)簽值數(shù)據(jù)庫中的所有g(shù)olang軟件包自動(dòng)掃描依賴并重新構(gòu)建golang軟件包并歸檔存儲(chǔ)到rpm軟件包倉庫中。
7.根據(jù)權(quán)利要求1所述的golang軟件包自動(dòng)修復(fù)cve漏洞的方法,其特征在于,所述在引入新golang軟件包、golang軟件包版本升級以及修復(fù)golang軟件的cve漏洞時(shí)通過版本標(biāo)簽值的變化使得obs編譯系統(tǒng)自動(dòng)觸發(fā)重新編譯包括:在使用golang語言開發(fā)的軟件包升級或者引入新的golang語言開發(fā)的golang軟件包時(shí),由于golang軟件包的版本標(biāo)簽值重置或者新增觸發(fā)obs編譯系統(tǒng)對版本標(biāo)簽值數(shù)據(jù)庫中的重置或者新增版本標(biāo)簽值的golang軟件包自動(dòng)掃描依賴并重新構(gòu)建golang軟件包并歸檔存儲(chǔ)到rpm軟件包倉庫中。
8.一種golang軟件包自動(dòng)修復(fù)cve漏洞的系統(tǒng),包括相互連接的微處理器和存儲(chǔ)器,其特征在于,所述微處理器被編程或配置以執(zhí)行權(quán)利要求1~7中任意一項(xiàng)所述golang軟件包自動(dòng)修復(fù)cve漏洞的方法。
9.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有計(jì)算機(jī)程序或指令,其特征在于,該計(jì)算機(jī)程序或指令被編程或配置以通過處理器執(zhí)行權(quán)利要求1~7中任意一項(xiàng)所述golang軟件包自動(dòng)修復(fù)cve漏洞的方法。
10.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序或指令,其特征在于,該計(jì)算機(jī)程序或指令被編程或配置以通過處理器執(zhí)行權(quán)利要求1~7中任意一項(xiàng)所述golang軟件包自動(dòng)修復(fù)cve漏洞的方法。