本申請(qǐng)涉及軟件開發(fā),特別是涉及一種融合多維特征與時(shí)序依賴的持續(xù)集成構(gòu)建結(jié)果預(yù)測(cè)方法。
背景技術(shù):
1、持續(xù)集成和持續(xù)部署(ci/cd)是現(xiàn)代軟件開發(fā)實(shí)踐中的兩個(gè)關(guān)鍵過程,旨在提高軟件交付的速度、質(zhì)量和頻率。github?actions(gha)是github的ci/cd平臺(tái),允許用戶在github倉(cāng)庫(kù)中自動(dòng)化軟件開發(fā)工作流程。雖然github?actions為開發(fā)者提供了極大的便利,但也存在一些問題。無(wú)論是workflow的配置文件中存在錯(cuò)誤,還是提交的代碼中存在bug,都可能會(huì)導(dǎo)致最終的構(gòu)建失敗。構(gòu)建失敗不僅僅會(huì)導(dǎo)致時(shí)間的浪費(fèi);它還分散了注意力,消耗了大量計(jì)算資源,降低了生產(chǎn)力。因此,提前預(yù)測(cè)構(gòu)建結(jié)果和耗時(shí)具有明顯重要性?,F(xiàn)有的技術(shù)方案研究涉及到對(duì)github?actions中構(gòu)建的結(jié)果成功與否任務(wù)和耗時(shí)預(yù)測(cè)任務(wù)。考慮到?ci/cd?構(gòu)建數(shù)據(jù)的順序特性,在這兩項(xiàng)預(yù)測(cè)任務(wù)中,獲取與時(shí)間相關(guān)的輸入特征,例如前一個(gè)構(gòu)建的結(jié)果,是必不可少的。雖然有研究者的研究表明,像是團(tuán)隊(duì)溝通這種非技術(shù)因素,在預(yù)測(cè)構(gòu)建失敗中同樣具有價(jià)值,但是像團(tuán)隊(duì)溝通這種的信息的獲取過程往往相當(dāng)繁瑣。為了準(zhǔn)確預(yù)測(cè)構(gòu)建結(jié)果,一個(gè)健壯且全面的數(shù)據(jù)集是不可或缺的。在尋找公開可訪問的ci/cd構(gòu)建數(shù)據(jù)集時(shí)發(fā)現(xiàn)選項(xiàng)有限,特別是那些符合特定需求的數(shù)據(jù)集。現(xiàn)在已經(jīng)存在的ci/cd數(shù)據(jù)集,比如travis?torrent,盡管它是一個(gè)包含來(lái)自travis?ci和githubactions大量構(gòu)建數(shù)據(jù)的豐富資源,但并不能完全滿足需求。需要研究專注于一個(gè)特定于github?actions的模型,用于預(yù)測(cè)github倉(cāng)庫(kù)的構(gòu)建結(jié)果和持續(xù)時(shí)間,這就需要?jiǎng)?chuàng)建一個(gè)定制的數(shù)據(jù)集。此外,還有研究者發(fā)現(xiàn)在預(yù)測(cè)構(gòu)建失敗與成功之間的準(zhǔn)確性存在顯著差異,這促使他們采用級(jí)聯(lián)分類器來(lái)糾正這種不平衡。一部分研究者的研究表明數(shù)據(jù)集的不平衡性是預(yù)測(cè)失敗精度較低的主要原因,他們建議采用過采樣和欠采樣等技術(shù)來(lái)增強(qiáng)模型在不平衡數(shù)據(jù)集上的性能。此外,考慮到ci/cd數(shù)據(jù)的時(shí)間序列特性,他們比較了通過交叉驗(yàn)證與時(shí)間序列驗(yàn)證訓(xùn)練模型最終得到的模型性能差異,實(shí)驗(yàn)結(jié)果表明,交叉驗(yàn)證在大多數(shù)情況下能夠表現(xiàn)出更優(yōu)越的性能。
2、然而,現(xiàn)有持續(xù)集成和持續(xù)部署(ci/cd)構(gòu)建預(yù)測(cè)技術(shù)主要依賴于travistorrent數(shù)據(jù)集。travis?torrent并不是針對(duì)github?actions(gha)的專用數(shù)據(jù)集,且目前缺乏公開的gha構(gòu)建數(shù)據(jù)集。這導(dǎo)致現(xiàn)有技術(shù)在數(shù)據(jù)方面無(wú)法滿足針對(duì)gha構(gòu)建預(yù)測(cè)的特定需求,限制了模型的準(zhǔn)確性和適用性。目前的技術(shù)大多僅使用傳統(tǒng)的機(jī)器學(xué)習(xí)方法進(jìn)行構(gòu)建成功與否或耗時(shí)的預(yù)測(cè),這些方法在預(yù)測(cè)效果上存在不足,普遍預(yù)測(cè)偏差較大,無(wú)法滿足高精度預(yù)測(cè)的需求。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對(duì)上述技術(shù)問題,提供一種能夠滿足高精度預(yù)測(cè)需求的融合多維特征與時(shí)序依賴的持續(xù)集成構(gòu)建結(jié)果預(yù)測(cè)方法。
2、一種融合多維特征與時(shí)序依賴的持續(xù)集成構(gòu)建結(jié)果預(yù)測(cè)方法,所述方法包括:
3、根據(jù)項(xiàng)目篩選工具對(duì)github中的項(xiàng)目進(jìn)行篩選并根據(jù)github?rest?api和網(wǎng)絡(luò)爬蟲技術(shù)獲取對(duì)應(yīng)項(xiàng)目倉(cāng)庫(kù)的構(gòu)建數(shù)據(jù)并提取構(gòu)建數(shù)據(jù)中預(yù)測(cè)構(gòu)建結(jié)果與耗時(shí)所需的相關(guān)特征;
4、對(duì)相關(guān)特征進(jìn)行標(biāo)準(zhǔn)化處理,根據(jù)處理后的相關(guān)特征構(gòu)建用于成功與否與耗時(shí)預(yù)測(cè)的特征向量;利用hadamard積生成交互特征,捕捉成功與否與耗時(shí)預(yù)測(cè)的特征向量間的非線性交互關(guān)系并利用lstm提取序列依賴,捕捉成功與否與耗時(shí)預(yù)測(cè)的特征向量中歷史構(gòu)建相關(guān)特征的時(shí)序依賴關(guān)系,得到模型輸入特征;
5、構(gòu)建結(jié)果與耗時(shí)預(yù)測(cè)模型;結(jié)果與耗時(shí)預(yù)測(cè)模型包括輸入層、圖注意力網(wǎng)絡(luò)模塊、時(shí)序卷積模塊和多任務(wù)輸出層;在輸入層對(duì)模型輸入特征進(jìn)行標(biāo)準(zhǔn)化,得到標(biāo)準(zhǔn)化后的特征;在圖注意力網(wǎng)絡(luò)模塊對(duì)標(biāo)準(zhǔn)化后的特征間的動(dòng)態(tài)關(guān)聯(lián)進(jìn)行建模,得到動(dòng)態(tài)關(guān)聯(lián)向量;在時(shí)序卷積對(duì)標(biāo)準(zhǔn)化后的特征進(jìn)行特征提取,得到時(shí)序特征向量;
6、在多任務(wù)輸出層將動(dòng)態(tài)關(guān)聯(lián)向量和時(shí)序特征向量進(jìn)行拼接后的向量進(jìn)行構(gòu)建成功與否預(yù)測(cè)和耗時(shí)預(yù)測(cè);
7、根據(jù)預(yù)先設(shè)置的損失函數(shù)對(duì)結(jié)果與耗時(shí)預(yù)測(cè)模型進(jìn)行訓(xùn)練,得到訓(xùn)練好的結(jié)果與耗時(shí)預(yù)測(cè)模型;利用訓(xùn)練好的結(jié)果與耗時(shí)預(yù)測(cè)模型進(jìn)行構(gòu)建結(jié)果預(yù)測(cè)。
8、有益效果:本申請(qǐng)針對(duì)?github?actions?缺乏專用數(shù)據(jù)集的現(xiàn)狀,利用項(xiàng)目篩選工具、github?rest?api?和網(wǎng)絡(luò)爬蟲獲取構(gòu)建數(shù)據(jù),構(gòu)建專屬數(shù)據(jù)集。通過提取預(yù)測(cè)構(gòu)建結(jié)果與耗時(shí)的相關(guān)特征,滿足特定需求,為精準(zhǔn)預(yù)測(cè)奠定堅(jiān)實(shí)數(shù)據(jù)基礎(chǔ),彌補(bǔ)現(xiàn)有數(shù)據(jù)無(wú)法契合?github?actions?構(gòu)建預(yù)測(cè)的缺陷。在特征處理環(huán)節(jié),標(biāo)準(zhǔn)化相關(guān)特征,利用?hadamard積生成交互特征捕捉非線性關(guān)系,借助?lstm?提取序列依賴,挖掘時(shí)序特征,使模型輸入特征更具代表性。構(gòu)建的預(yù)測(cè)模型含輸入層、圖注意力網(wǎng)絡(luò)模塊、時(shí)序卷積模塊和多任務(wù)輸出層。各模塊協(xié)同工作,輸入層二次標(biāo)準(zhǔn)化,圖注意力網(wǎng)絡(luò)建模動(dòng)態(tài)關(guān)聯(lián),時(shí)序卷積提取時(shí)序特征,多任務(wù)輸出層利用任務(wù)相關(guān)性提升預(yù)測(cè)整體精度。同時(shí),第一損失函數(shù)動(dòng)態(tài)平衡數(shù)據(jù)分布,克服數(shù)據(jù)不平衡對(duì)精度的影響,大幅提升預(yù)測(cè)準(zhǔn)確性,解決傳統(tǒng)方法預(yù)測(cè)偏差大的問題。
9、同時(shí),本申請(qǐng)?zhí)岢龅亩嗳蝿?wù)時(shí)序圖網(wǎng)絡(luò)mt?-?tgn支持增量訓(xùn)練,在?ci/cd?實(shí)時(shí)場(chǎng)景下,能依據(jù)新構(gòu)建數(shù)據(jù)快速更新模型,及時(shí)適應(yīng)軟件開發(fā)流程變化,相比傳統(tǒng)模型更貼合實(shí)際應(yīng)用,有效減少構(gòu)建失敗帶來(lái)的時(shí)間、人力及計(jì)算成本浪費(fèi),提高軟件開發(fā)效率。同時(shí)充分分析構(gòu)建結(jié)果與耗時(shí)的多方面影響因素,涵蓋當(dāng)前構(gòu)建、歷史構(gòu)建、配置文件和倉(cāng)庫(kù)等維度,可更精準(zhǔn)識(shí)別可能失敗的構(gòu)建與長(zhǎng)耗時(shí)構(gòu)建,顯著提升軟件持續(xù)集成、持續(xù)部署構(gòu)建效率,助力開發(fā)人員提前識(shí)別潛在問題,優(yōu)化開發(fā)流程。
1.一種融合多維特征與時(shí)序依賴的持續(xù)集成構(gòu)建結(jié)果預(yù)測(cè)方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)項(xiàng)目篩選工具對(duì)github中的項(xiàng)目進(jìn)行篩選并根據(jù)github?rest?api和網(wǎng)絡(luò)爬蟲技術(shù)獲取對(duì)應(yīng)項(xiàng)目倉(cāng)庫(kù)的構(gòu)建數(shù)據(jù),包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述相關(guān)特征包括歷史構(gòu)建相關(guān)特征、當(dāng)前構(gòu)建相關(guān)特征、配置文件相關(guān)特征和所屬倉(cāng)庫(kù)相關(guān)特征。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述圖注意力網(wǎng)絡(luò)模塊對(duì)所述標(biāo)準(zhǔn)化后的特征間的動(dòng)態(tài)關(guān)聯(lián)進(jìn)行建模,得到動(dòng)態(tài)關(guān)聯(lián)向量,包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述多任務(wù)輸出層包括成功與否預(yù)測(cè)模塊和耗時(shí)預(yù)測(cè)模塊;所述成功與否預(yù)測(cè)模塊包括全連接層和softmax層;所述耗時(shí)預(yù)測(cè)模塊包括全連接層和relu。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在所述多任務(wù)輸出層將所述動(dòng)態(tài)關(guān)聯(lián)向量和時(shí)序特征向量進(jìn)行拼接后的向量進(jìn)行構(gòu)建成功與否預(yù)測(cè)和耗時(shí)預(yù)測(cè),包括:
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)先設(shè)置的損失函數(shù)包括第一損失函數(shù)和多任務(wù)聯(lián)合損失函數(shù)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述第一損失函數(shù)為:
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述多任務(wù)聯(lián)合損失函數(shù)為: