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

前言

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

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

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

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


相關網站

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!sql


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自啓動服務時也出現一樣問題】。vim

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

咱們查看相關日誌:api

#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文件bash

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】,操做成功。app

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

系列問題

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

問題: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

相關文章
相關標籤/搜索