createprocess失败代码2_DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查
在持續(xù)集成過(guò)程中,針對(duì)代碼的靜態(tài)檢查一般有兩個(gè)時(shí)間點(diǎn):一是提交代碼的時(shí)候、二是提交merge request的時(shí)候,如果代碼檢查不通過(guò),則可以直接拒絕此次代碼提交或者合并。下面我們介紹下在常見(jiàn)的devops工具鏈sonarqube、jenkins和gitlab下,實(shí)現(xiàn)在merge request提交的時(shí)候進(jìn)行代碼檢查的方法。
jenkins端的配置
首先,我們?cè)趈enkins中安裝如下幾個(gè)插件:
- gitlab plugin: https://wiki.jenkins-ci.org/display/JENKINS/GitLab+Plugin。此插件的主要作用是與gitlab集成,可以在代碼提交、merge request創(chuàng)建等情況下觸發(fā)jenkins進(jìn)行構(gòu)建,簡(jiǎn)單講,就是在gitlab的webhook下觸發(fā)jenkins構(gòu)建
- sonarqube scanner for jenkins: http://redirect.sonarsource.com/plugins/jenkins.html。此插件的作用是調(diào)用sonar scanner進(jìn)行代碼掃描,并可以將jenkins構(gòu)建的結(jié)果以comments的形式添加到merge request中。從而方便后續(xù)code reviewer的查看。
- sonar quality gates plugins: https://github.com/jenkinsci/sonar-quality-gates-plugin/blob/master/README.md。此插件的作用是讀取一個(gè)sonar project的quality gates結(jié)果,如果是失敗,則更改jenkins 構(gòu)建的結(jié)果為失敗或者不穩(wěn)定。
安裝完成之后,我們需要在gitlab端創(chuàng)建一個(gè)token供jenkins使用:登錄gitlab之后,點(diǎn)擊個(gè)人頭像那個(gè)地方,在settings頁(yè)的access token創(chuàng)建token,注意至少勾選api那的復(fù)選框。
另外我們需要在sonarqbue端創(chuàng)建一個(gè)token供jenkins使用:登錄sonarqube后,點(diǎn)擊個(gè)人頭像那個(gè)地方,在My Account頁(yè)的tokens創(chuàng)建token。
然后我們進(jìn)入jenkins的系統(tǒng)管理-系統(tǒng)設(shè)置,找到gitlab的配置塊:
找到quality gates - sonarqube的配置塊:
找到sonarqube server的配置塊:
接下來(lái),我們先建一個(gè)自由類型的項(xiàng)目,關(guān)鍵的配置如下:
然后點(diǎn)擊Advanced按鈕,為本jenkins的構(gòu)建生成一個(gè)token:
在構(gòu)建觸發(fā)器的地方,我們只勾選Opened Merge requests,也就是merge request創(chuàng)建的時(shí)候進(jìn)行構(gòu)建,大家注意截圖中有個(gè)webhook的url,該url后續(xù)需要填入到gitlab中。
在構(gòu)建這個(gè)地方,我們選擇execute sonarqube scanner選項(xiàng)。gitlab在發(fā)往jenkins的hook中會(huì)發(fā)送一些變量供我們?cè)趈enkins中使用,大家可以參考:https://github.com/jenkinsci/gitlab-plugin#add-a-note-to-merge-requests,如下是個(gè)完整變量的截圖:
在構(gòu)建后操作,我們?cè)黾恿?項(xiàng):
大家注意下:第一個(gè)是Quality Gates Sonarqube Plugin,這個(gè)讀取代碼掃描后的結(jié)果,如果分析失敗也就是沒(méi)有通過(guò)sonar的質(zhì)量門,則此次構(gòu)建的結(jié)果為FAILED。第二個(gè)是把此次構(gòu)建的結(jié)果以note的形式添加到gitlab的merge request中。
到此,jenkins的配置完成。
gitlab端配置
我們進(jìn)入gitlab的項(xiàng)目后,點(diǎn)擊settings-integration,也就是給項(xiàng)目添加一個(gè)webhook,hook的地址就是上面構(gòu)建中出現(xiàn)的url,token是點(diǎn)擊advanced后創(chuàng)建的token,觸發(fā)器我們只選擇Merge request events好了,配置如下:
驗(yàn)證
下面我們?cè)趃itlab的項(xiàng)目里面,創(chuàng)建一個(gè)merge request,之后,就可以在jenkins端看到觸發(fā)了sonarqube的代碼掃描,并在掃描完成之后,根據(jù)是否通過(guò)sonar的quality gates,把成功或者失敗的信息添加到了merge requests的note中:
總結(jié)
文章介紹使用jenkins和sonarqube做基于gitlab的merge request的代碼靜態(tài)檢查方法,實(shí)用性高。文章介紹的集成方法,除可用于代碼檢查外,同樣可以用于與gitlab集成的自動(dòng)化測(cè)試、性能測(cè)試等,建議大家掌握。
另外一個(gè)擴(kuò)展點(diǎn),就是如果jenkins的構(gòu)建不過(guò),直接強(qiáng)制關(guān)閉gitlab的merge request,而不僅僅是添加一個(gè)note。
總結(jié)
以上是生活随笔為你收集整理的createprocess失败代码2_DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 系统设计基础:系统设计基本任务相关知识
- 下一篇: NLP系列之文本分类