Jenkins+Sonar品質門禁【實踐篇-maven運作版】
配置文檔百度挺多的,就不展開來了,找類似這種參考文檔:
https://www.tpisoftware.com/tpu/articleDetails/563
首先很遺憾的告訴大家,maven版做不了品質門禁!隻能掃描!!!
效果撐死,隻能做到這樣:

就我們公司項目裡,jenkins建的maven任務是最多的,是以我也首選用maven項目測試,然而11月尾叫了解,各種測試下來沒有進展。那時還特意去官網注冊,生成SonarQube token,配置到jenkins憑證上,以便在jenkins釋出中使用token代替賬号密碼的方式去操作sonarqube,還下載下傳中文漢化包進行漢化。
然而配置任務釋出報錯:Exception in thread "main" java.lang.NoClassDefFoundError: org/sonar/batch/bootstrapper/IssueListener,SonarQube scanner exited with non-zero code
搞了1~2天,從此被抓去幹别的活了。。。沒錯,就是去搞虛拟機遷移,因為公司買了新伺服器,需要把僞伺服器(家用桌上型電腦改造的linux系統,裝了個virtualbox)的虛拟機遷移到新伺服器上(2網段)。而這台測試機器剛好也要挪走,話說當時想直接把jenkins裝在系統上,而不是docker上,因為想着以後一直用。
安裝過程有個詭異的問題,不知道是不是2網段跟預設0網段有什麼沖突,各種方式裝jenkins(java -jar war包、tomcat跑war包,甚至yum 直接裝),無一不遇到首次安裝jenkins,插件安裝失敗問題:
不要告訴我這個方法:
試過很多遍,無解。竟然改完之後,重新開機jenkins,修改過的配置檔案還是沒改過前的。且考慮到,裝完之後還要配置很多東西,什麼git、java、maven,還要根據報錯資訊裝缺漏的插件。。。
無奈隻能搞回docker版的jenkins,話說docker恢複安裝環境确實快。
1、恢複鏡像:原伺服器上docker save,新伺服器docker load
2、資料恢複:各種映射到主控端的資料目錄拷貝複制
3、恢複服務:docker run -v 跑起來即可
上面都是流水文,交代下背景,下面幹貨來了!
話說我在jenkins建的maven項目裡,報錯資訊看不到解決辦法。是以幹脆模拟整個過程:進去docker jenkins裡面,git 拉項目,然後手動運作sonar掃描。
因為公司項目不敢在pom.xml 添加東西,是以借來了小俊子給的helloworld java 項目。然後掃描成功了。
首先貼上maven配置
為啥要貼上這個Build圖,到時pipeline篇會提到
Post Steps加上Analysis properties配置,如下:
1、進去jenkins容器
docker exec -it xxxx bash
2、進入jenkins worksapce目錄
3、克隆hello-world.git項目
(趁某俊把這個項目還是設定公開,大家有需要趕緊下下來,哈哈哈,我已經粘到我gitee上了,下一篇會說到)
4、修改pom.xml 檔案,添加插件引入:
加個題外話,其實我們公司maven項目也能加,因為這堆代碼要放到build和plugins裡面的,如果pom.xml沒有這兩個标簽,加上去即可。就是下面這個意思:
參考:https://blog.csdn.net/zwk_sys/article/details/105103691
4、手動運作掃描
5、浏覽器進去sonar頁面看:
其實上面手動掃描運作成功之後,基本已經沒啥大問題,配置到jenkins上的maven項目裡,釋出就行了。(特别注意要在pom.xml添加插件引入代碼,因為要借用jenkins容器裡面的sonar scaner工具去掃描)
當我歡喜地給我上司看效果時候,他不是要這種效果(我還歡喜地想把這個sonar用戶端裝到一台windows虛拟機上,讓開發他們為所欲為,裝到一半的時候才說不是要這種效果 = =)
他要檢測到代碼bug之後,不讓進行下一步釋出操作,讓開發改好bug再釋出。。。