Jenkins+Sonar品質門禁【實踐篇-maven版】
Jenkins+Sonar品質門禁【實踐篇-maven版】
配置文檔百度挺多的,就不展開來了
首先很遺憾的告訴大家,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,插件安裝失敗問題:

不要告訴我這個方法:
1 sed -i 's#//updates.jenkins-ci.org/download#//mirrors.tuna.tsinghua.edu.cn/jenkins#g;s#//www.google.com#//www.baidu.com#g' default.json
2
3 //jenkins訪問ip/jenkins/pluginManager/advanced
4 上面的 Update Site url 改成 mirrors.tuna.tsinghua.edu.cn 。。。
試過很多遍,無解。竟然改完之後,重啟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 項目。然後掃描成功了。
1、進去jenkins容器
docker exec -it xxxx bash
2、進入jenkins worksapce目錄
3、克隆hello-world.git項目(趁某俊把這個項目還是設置公開,大家有需要趕緊下下來,哈哈哈,我已經粘到我gitee上了,下一篇會說到)
git clone https://gitee.com/xie-zijun/hello-world.git
4、修改pom.xml 文件,添加插件引入:
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.2</version>
</plugin>
加個題外話,其實我們公司maven項目也能加,因為這堆程式碼要放到build和plugins裡面的,如果pom.xml沒有這兩個標籤,加上去即可。就是下面這個意思:
<!--maven打包插件--> <build> <plugins> 上面那坨程式碼 </plugins> </build>
4、手動運行掃描
bash-5.1# /usr/local/maven/bin/mvn install sonar:sonar -Dsonar.host.url=http://192.168.2.170:9090



