SonarQube+Jenkins,搭建持續交付平台


前言

Kurt Bittner曾說過,如果敏捷僅僅只是開始,那持續交付就是頭條!
“If Agile Was the Opening Act, Continuous Delivery is the Headliner!”——Kurt Bittner

五月上旬我的一個主要工作就是搭建持續交付平台。
打算以Jenkins為核心,每天定時從代碼庫中檢出最新的代碼進行編譯、構建。構建結果通過自動發送的郵件通知到項目組,開發人員每天只需關心最新的集成結果是否正確即可。

再搭建SonarQube代碼質量檢測工具,單位時間定時掃描代碼庫最新代碼,檢測出代碼中的存在的阻斷錯誤、嚴重錯誤、主要錯誤、次要錯誤和相關提示信息。通過SonarQube能有效簡潔統一代碼風格,利於大家更好的相互理解和后期排查。

以下是搭建過程中用到的相關網站及碰到的坑。


相關網站

Sonar官方網站:http://www.sonarqube.org/
Jenkins官方使用教程:https://wiki.jenkins-ci.org/display/JENKINS/Use+Jenkins
Jenkins安裝鏈接:http://www.cnblogs.com/zhangqingsh/archive/2013/03/19/2968998.html
Sonar安裝鏈接:http://flyingdutchman.iteye.com/blog/1905906
Sonar簡介及安裝地址:http://www.ibm.com/developerworks/cn/opensource/os-sonarqube/
Jenkins使用集錦:http://my.oschina.net/u/260244/blog/318755?fromerr=ZvUu6dmF
Jenkins和Sonar整合地址1:https://lasithapetthawadu.wordpress.com/2014/05/03/configure-jenkins-with-sonarqube-for-static-code-analysis-and-integration/
Jenkins和Sonar整合地址2:http://www.cnblogs.com/zhuhongbao/p/4197974.html
搭建過程中涉及到的 JDK、Tomcat、Mysql、Redis、Maven等系列安裝鏈接省略 0.0!


sonar添加service服務

# 編寫簡單的sonar啟動腳本
vim /etc/init.d/sonar

[sonar]
#!/bin/sh  
start()  
{  
        /data/sonar/sonarqube-5.6.1/bin/linux-x86-64/sonar.sh start
}  
stop()  
{  
        /data/sonar/sonarqube-5.6.1/bin/linux-x86-64/sonar.sh stop
}
status()  
{       
        /data/sonar/sonarqube-5.6.1/bin/linux-x86-64/sonar.sh status
}
restart()  
{  
        /data/sonar/sonarqube-5.6.1/bin/linux-x86-64/sonar.sh restart
} 
SONAR="/data/sonar/sonarqube-5.6.1/bin/linux-x86-64/sonar.sh"
[ -f $SONAR ] || exit 1  
# See how we were called.  
case "$1" in  
        start)  
                start  
                ;;  
        stop)  
                stop  
                ;;  
        restart)  
                restart
                ;;  
        status)  
                status 
                ;;  
                # stop    sleep 3   start  ;;  
        *)  
                echo $"Usage: $0 {start|stop|status|restart}"  
                exit 1  
esac  
exit 0 


# sonar服務驗證
service sonar status
service sonar start
service sonar restart
service sonar stop

問題:驗證service服務時,發現四個命令唯獨 service sonar start 命令失敗,但是手動輸入下面命令卻可以啟動成功【添加sonar自啟動服務時也出現同樣問題】。

/data/sonar/sonarqube-5.6.1/bin/linux-x86-64/sonar.sh start

我們查看相關日志:

#tail -f /data/sonar/sonarqube-5.6.1/logs/sonar.log
--> Wrapper Started as Daemon
Launching a JVM...
Unable to start JVM: No such file or directory (2)
JVM exited while loading the application.
JVM Restarts disabled.  Shutting down.
<-- Wrapper Stopped

log提示不能加載JVM,接着查看sonar的wrapper.conf文件

vim /data/sonar/sonarqube-5.6.1/conf/wrapper.conf

# Path to JVM executable. By default it must be available in PATH.
# Can be an absolute path, for example:
#wrapper.java.command=/path/to/my/jdk/bin/java
wrapper.java.command=/java

wrapper.conf文件提示wrapper.java.command需要配置java路徑,默認路徑顯然有誤,修改后,再次運行【service sonar start】,操作成功。

wrapper.java.command=/usr/java/jdk1.8.0_31/bin/java

系列問題

問題:通過命令直接安裝Jenkins,連接被拒絕時
方案:手動下載包,下載地址:http://mirrors.jenkins-ci.org/war/

問題:Jenkins安裝完成后啟動報錯

圖片1
方案:通過"vi /etc/init.d/jenkins",把JDK的java路徑加上即可
注意:Jenkins啟動后自動部署Tomcat,Tomcat需先啟動

問題:Sonar無法啟動,Failed to start SonarQube.
方案:切換成root用戶啟動試試,可能是沒有權限。

問題:Sonar中文亂碼問題
方案:sonar-run配置有問題,里面的jdbc配置是:
圖片2

問題:Sonar某個版本安裝成功后,啟動卻總只顯示一個頁面,並提示Sonar正在維護中
方案:無需更換版本,仔細查看發現該提示頁面可以直接點擊進行相關插件的自動升級,重啟后首頁即可訪問。

問題:Sonar成功啟動后,卻總是馬上自動關閉服務
方案:很可能是沒有啟動mysql服務,啟動即可。

問題:Sonar成功運行后,如何顯示中文?
方案:在Settings/SYSTEM/Update Center/Available Plugins下安裝漢化包,並重新啟動Sonar。
注意:當某些插件總是下載失敗時,可以直接搜索插件名手動下載,並在【系統管理--管理插件--高級--瀏覽-上傳插件】中上傳插件即可。

問題:Jenkins集成Sonar后,Sonar無法掃描Java語言代碼
方案:在Sonar的Settings/SYSTEM/Update Center/Available目錄下下載Java語言包,並重新啟動Jenkins和Sonar。Jenkins會根據配置的掃描路徑,定時掃描相關代碼,並在Sonar中可視化。
注意:SonarQube集成Java插件官方地址:http://docs.sonarqube.org/display/PLUG/Java+Plugin

問題:下載某語言包后,Sonar重啟仍然無法掃描相關代碼
原因:如下載"C/C++/Objective-c"這個插件后,重新啟動掃描C代碼總是報錯:

Caused by: org.sonar.api.utils.SonarException: No license for cpp

原以為是需要安裝cpp插件,后來才發現重點是No license,意思就是需要付費購買許可證。
網上搜索免費許可證無果,然后點擊"Get trial key", 結果立馬收到官方郵件回復被拒,終放棄。
圖片3

問題:Jenkins集成Sonar后,Jenkins自動化腳本執行失敗,並報如下錯誤
方案:更換插件版本即可,下次安裝需要注意。

圖片4

問題:Jenkins賬戶權限如何分配
方案: 相關鏈接:http://www.360doc.com/content/13/0802/14/7811581_304255550.shtml
注意: 如果用admin賬戶登錄,在分配權限的時候,將admin權限全部置空,一旦退出,將無法使用 0.0!我當初的解決方法是修改遠程配置文件,而如果配置文件一旦改亂,就只能重裝了。

運行結果

Sonar成功運行如圖五圖六所示,其中代碼檢測規則可以修改也可以自定義,對於圖六顯示出的具體錯誤,Sonar也可在頁面直接分配給某個組員修改

圖片5
圖片6



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM