基于云的GitLab CI/CD平臺(tái)使開發(fā)團(tuán)隊(duì)能夠簡化其CI/CD流程,并加速軟件開發(fā)生命周期(SDLC)。
將嚴(yán)格的、基于合規(guī)性的靜態(tài)分析(如Helix QAC所提供)作為新階段添加到現(xiàn)有的GitLab CI/CD流程中,將進(jìn)一步增強(qiáng)SDLC,并將您的DevOps工作流從持續(xù)集成推進(jìn)到持續(xù)合規(guī)。
GitLab用戶為何應(yīng)在CI/CD工作流中使用Helix QAC
GitLab是一個(gè)由AI驅(qū)動(dòng)的DevSecOps平臺(tái),為Wiki、問題跟蹤和CI/CD流程功能提供Git存儲(chǔ)庫管理器。它由GitLab公司開發(fā),并于2011年發(fā)布。
GitLab CI/CD(與CI/CD流程定義和工作流相關(guān)的組件)被全球軟件開發(fā)團(tuán)隊(duì)用于許多不同的軟件項(xiàng)目,并且越來越多地應(yīng)用于各種嵌入式行業(yè),包括航空航天、國防、汽車、醫(yī)療設(shè)備和工業(yè)自動(dòng)化。
GitLab CI/CD 深受開發(fā)人員歡迎,因?yàn)樗狭碎_發(fā)人員的工作流程,縮短了開發(fā)周期,降低了工程風(fēng)險(xiǎn),幫助確保應(yīng)用程序更加安全,并打通了孤島和階段之間的壁壘?,F(xiàn)在,許多開發(fā)團(tuán)隊(duì)也希望將Helix QAC之類的靜態(tài)分析工具添加到GitLab中,為其CI流程增加自動(dòng)化、深入的程序間分析,以確保標(biāo)準(zhǔn)合規(guī)。
Helix QAC如何與GitLab相輔相成
Helix QAC是一款靜態(tài)代碼分析工具,可嚴(yán)格準(zhǔn)確地遵守監(jiān)管嚴(yán)格和安全關(guān)鍵型行業(yè)的編碼標(biāo)準(zhǔn)。
對(duì)于使用GitLab CI/CD來簡化工作流并縮短DevOps周期的嵌入式開發(fā)團(tuán)隊(duì),可以從GitLab與Helix QAC的結(jié)合使用中獲益。Helix QAC可以在開發(fā)過程的早期識(shí)別錯(cuò)誤、代碼質(zhì)量問題、合規(guī)性故障和標(biāo)準(zhǔn)偏差,同時(shí)還能輕松地進(jìn)行更改,從而幫助團(tuán)隊(duì)實(shí)現(xiàn)開發(fā)左移。
與許多靜態(tài)分析工具不同,Helix QAC的深度和高精度分析引擎,很少或幾乎不會(huì)返回誤報(bào)和漏報(bào)結(jié)果,因此,開發(fā)人員無需浪費(fèi)時(shí)間去調(diào)查誤報(bào),而可以信賴這些分析結(jié)果,從一開始就確保代碼安全、可靠且易于維護(hù)。
最新版本的Helix QAC更新改進(jìn)了現(xiàn)有的Delta分析功能,通過CI-builds實(shí)現(xiàn)了與Perforce Validate平臺(tái)的完整CI/CD集成。其對(duì)CI構(gòu)建的支持,可以擴(kuò)展到在基于云的CI流程中運(yùn)行的分析作業(yè)、容器化構(gòu)建任務(wù),以及通過內(nèi)置Web API集成到不同的CI/CD平臺(tái)(如Gitlab)。
將GitLab與Helix QAC結(jié)合使用
將GitLab等CI平臺(tái)與Helix QAC結(jié)合使用,可為開發(fā)人員提供一個(gè)集中化和標(biāo)準(zhǔn)化的工作基礎(chǔ),通過腳本和命令行工具幫助實(shí)現(xiàn)CI自動(dòng)化。
有多種方法可以將Helix QAC靜態(tài)分析工具與GitLab(或類似環(huán)境)等CI系統(tǒng)相集成,因?yàn)镠elix QAC提供了一個(gè)命令行界面(CLI)和靈活的工具,以適應(yīng)大多數(shù)工作流程和各種配置。
例如,Helix QAC可以集成到DevOps工作流程中,作為合并請(qǐng)求自動(dòng)測試的一部分。這意味著,當(dāng)開發(fā)人員認(rèn)為其功能已完成并準(zhǔn)備合并時(shí),GitLab將運(yùn)行分析,并反饋是否發(fā)現(xiàn)問題,而無需任何額外輸入。這樣,開發(fā)人員就可以執(zhí)行質(zhì)量門,如果Helix QAC確實(shí)發(fā)現(xiàn)了功能分支引入的新問題,則強(qiáng)制進(jìn)行審查;反之,則確認(rèn)功能分支沒有向主分支引入任何新問題,從而簡化整個(gè)合并請(qǐng)求流程。
Helix QAC的CI和靈活分析功能可幫助團(tuán)隊(duì)管理結(jié)果,并識(shí)別相較于上一次完整分析的新更改所引入的潛在缺陷。此外,開發(fā)人員可以更快地就錯(cuò)誤或更改進(jìn)行溝通,而無需等待夜間構(gòu)建,另外還可以通過Validate平臺(tái)訪問整個(gè)組織的結(jié)果和其他數(shù)據(jù)。
這些Helix QAC功能可在GitLab流程中自動(dòng)執(zhí)行測試,為多個(gè)并發(fā)流程構(gòu)建質(zhì)量門,以確保代碼的質(zhì)量、安全性和編碼標(biāo)準(zhǔn)的合規(guī)性。
GitLab和Helix QAC集成的工作原理
演示示例展示了開發(fā)人員打開合并請(qǐng)求,啟動(dòng)包含Helix QAC分析的CI流程的過程,該分析配置為在被合并的分支和它要合并到的項(xiàng)目之間執(zhí)行Delta分析。在這種情況下,由于添加了新問題,GitLab提示流程失敗,并提供了一個(gè)鏈接,供開發(fā)人員或?qū)彶閱T在Validate中查看這些問題。
在開發(fā)項(xiàng)目時(shí),您的CI流程可以在關(guān)鍵步驟(如合并請(qǐng)求或主分支更新時(shí))自動(dòng)運(yùn)行系統(tǒng)化的Helix QAC靜態(tài)分析。
對(duì)主分支進(jìn)行定期的Helix QAC分析至關(guān)重要,它能夠確保其他分支與之比較的基線始終是最新的。主分支上的變更應(yīng)該始終通過合并請(qǐng)求獲得批準(zhǔn),因此在添加新問題時(shí),不應(yīng)該出現(xiàn)失敗狀態(tài)。
示例流程:
qac integration analysis: stage: test only: -master script: -make clean -rm -rf pqra pqraproject.xml -$HELIX_QACLI_PATH validate config -c -P . -U $VALIDATE_URL -b $VALIDATE_PROJECT -$HELIX_QACLI_PATH sync -P . -t INJECT -g --make -$HELIX_QACLI_PATH validate build -P .
qacli validate config命令可確保分析配置與Validate中的配置完全相同,從而在開發(fā)周期的各個(gè)階段正確執(zhí)行項(xiàng)目的標(biāo)準(zhǔn)和要求。
qacli sync命令可確保分析所有項(xiàng)目文件,以防在兩次提交之間添加或刪除了某些文件。
qacli validate build命令按配置運(yùn)行分析,并將結(jié)果作為新的構(gòu)建文件上傳到Validate。
當(dāng)運(yùn)行合并請(qǐng)求的流程時(shí),添加新問題時(shí)的反饋至關(guān)重要,因此流程也有所不同:
qac_MR stage: test only: -merge_requests script: -make clean -rm -rf pqra pqraproject.xml -$HELIX_QACLI_PATH validate config -c -P . -U $VALIDATE_URL -b $VALIDATE_PROJECT -$HELIX_QACLI_PATH sync -P . -t INJECT -g -- make -$HELIX_QACLI_PATH validate cibuild -P . -b $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME-$CI_JOB_ID | tee file.txt after_script: - > if[$CI_JOB_STATUS == 'success']; then echo "no issued found !" else grep http://file.txt> out.txt glab mr note $CI_MERGE_REQUEST_IID --unique --message $(cat out.txt) fi
該腳本與主分支的腳本非常相似,但不同之處在于現(xiàn)在使用了qacli validate cibuild命令。這個(gè)新命令會(huì)分析項(xiàng)目,更重要的是,與主分支相比,如果要添加新的問題,它會(huì)通過delta分析進(jìn)行檢查。然后,結(jié)果將作為特定的ci-build上傳到Validate,如果發(fā)現(xiàn)新問題,任務(wù)就會(huì)失敗。after_script用于自動(dòng)向合并請(qǐng)求添加注釋,并在Validate Web界面中提供帶有ci-build結(jié)果的鏈接。
ci-build是Helix QAC 2024.2版本的旗艦功能,它基于現(xiàn)有的delta分析進(jìn)行構(gòu)建,可通過以下方式簡化問題報(bào)告:
如果添加了新問題,可提供即時(shí)反饋,這種情況下,系統(tǒng)設(shè)為simply fail 即可。
可直接在Validate Web界面中查看問題,避免通過來回操作、在本地重新運(yùn)行分析來檢查任何新問題。
被標(biāo)記為偏差的問題(如ignore status)可以通過默認(rèn)的質(zhì)量門,從而使上述問題和流程能夠順利進(jìn)行。
在此演示中,ci-builds命令顯示,合并請(qǐng)求中提出的所有問題都需要修復(fù)或正確偏離,才能通過CI檢查。這樣就能確保主分支中的所有問題都已被接受、已知并記錄在案。
在Web消息瀏覽器中,您可以看到所有問題并確定到底發(fā)生了什么。就像Validate中的任何其他問題一樣,您可以為其分配負(fù)責(zé)人、指定狀態(tài)并輸入注釋。在這種情況下,您應(yīng)該設(shè)置一個(gè)狀態(tài)來修復(fù)它,或者要求提交合并請(qǐng)求的開發(fā)人員修復(fù)此代碼。
如果合并請(qǐng)求通過,或者開發(fā)人員修復(fù)了代碼,您看到的問題就會(huì)越來越少,或者剩下的問題可以忽略不計(jì)。
更進(jìn)一步來說,雖然此演示示例展示的是一個(gè)基本流程,但它還可以擴(kuò)展更多的功能。例如,Validate有一個(gè)應(yīng)用程序接口(API),可用于以各種方式增強(qiáng)集成,如:
讓合并請(qǐng)求中出現(xiàn)的注釋包含更多信息,說明引入了多少問題,嚴(yán)重程度如何。
發(fā)現(xiàn)新問題時(shí),自動(dòng)應(yīng)用已知的系統(tǒng)偏差和抑制。
使用自定義質(zhì)量門來識(shí)別任務(wù)是否成功,而不是依賴默認(rèn)的ci-build返回代碼。
Helix QAC中CI構(gòu)建功能的靈活性使開發(fā)人員能夠根據(jù)需求自定義流程。
開始使用GitLab和Helix QAC
Helix QAC是一款理想的靜態(tài)分析工具,可幫助基于GitLab CI/CD運(yùn)行的CI/CD流程嚴(yán)格執(zhí)行編碼標(biāo)準(zhǔn),確保功能安全合規(guī)性。Helix QAC CI/CD集成可自動(dòng)執(zhí)行分析,并確保開發(fā)團(tuán)隊(duì)擁有安全可靠的代碼、一致的樣式和更易于維護(hù)的代碼庫。
立即開始使用Gitlab和Helix QAC,優(yōu)化您的DevOps合規(guī)流程。
獲取更多產(chǎn)品支持,請(qǐng)咨詢Perforce中國授權(quán)合作伙伴——龍智:
審核編輯 黃宇
-
靜態(tài)分析
+關(guān)注
關(guān)注
1文章
39瀏覽量
3869 -
devops
+關(guān)注
關(guān)注
0文章
109瀏覽量
11987
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論