一、sonar和sonar-scanner的安裝:
1. 下載sonar,地址https://www.sonarqube.org/downloads/
2. 下載sonar-scanner,wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
3. unzip上面的兩個壓縮包
4. sonarqube-6.7.6/bin/linux-x86-64目錄下啟動sonar,命令是sh sonar.sh console 默認訪問端口9000.啟動后訪問地址http://ip:9000/可以出現(xiàn)sonar的首頁,下載中文安裝包(我這是已經裝過了)

5. 為sonar配置數(shù)據(jù)庫地址,自行安裝mysql設置好庫名用戶名密碼,此處不再贅述,然后修改sonar解壓后文件中的配置,
conf下的sonar.properties文件,設置
sonar.jdbc.username=
sonar.jdbc.password=
sonar.jdbc.url=
sonar.web.javaOpts=(為了防止堆內存不夠用可以適當加大一點)
sonar.web.host=0.0.0.0
sonar.web.port=9000
6. 設置后進入bin目錄下重啟sonar,sh sonar.sh start
此時發(fā)現(xiàn)進程起不來,退出了,查看logs目錄下的sonar.log報錯 [o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 143
看網上資料說是es報錯,查看es日志發(fā)現(xiàn)有一條 WARN es[][o.e.b.BootstrapChecks] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]。這里需要調整/etc/sysctl.conf文件,追加vm.max_map_count=262144然后執(zhí)行sysctl -p使生效
接下來重新啟動發(fā)現(xiàn)還是報錯起不來,并且sonar.log和es.log都沒有報錯信息,于是看了下web.log報錯如下Web server startup failed: Unsupported mysql version: 5.5. Minimal supported version is 5.6.,原來是我配置的mysql版本太低了,于是找了個5.6版本的mysql重新配置,至此可以成功啟動
7. sonar-scanner安裝只需要把sonar-scanner的bin目錄加到環(huán)境變量path中即可
二、 Jenkins下配置sonarQube和sonar-scanner
1. 下載和啟動Jenkins,非常簡單,下載完Jenkins的war包,然后java -jar jenkins.war即可啟動,默認端口8080
2. 進入Jenkins控制臺,下載sonar和git對應的插件,我這邊的是:


3. Jenkins的系統(tǒng)設置中添加SonarQube servers,配置路徑和認證。

其中Server authentication token是在sonar中生成的,生成方法:admin登陸

4. Jenkins的全局路徑中配置sonar-scanner的路徑如下:

5. 然后就可以愉快的在Jenkins中添加job并且對其進行靜態(tài)代碼分析了。我的job的主要配置:



6. 配置完成job后,立即構建,理論上就可以構建成功,并且Jenkins出現(xiàn)可以鏈接過去的分析結果像醬紫

鏈接過去大概是醬紫:

但怎么會這么順利呢,我這邊構建出現(xiàn)的問題匯總如下,下面對應Jenkins日志報的錯和解決方法
1.?Caused by: java.io.IOException: Cannot run program "git" (in directory "/home/devs/.jenkins/workspace/itsm-sonar"): error=2, 沒有那個文件或目錄
很明顯,這是因為裝Jenkins那臺機器沒有安裝git,裝一下即可
2.?Caused by: Not authorized. Please check the properties sonar.login and sonar.password.
這是因為在Jenkins的? analysis properties沒有配置sonar.login and sonar.password. 加上就好
3.?Caused by: You must define the following mandatory properties for 'itsm': sonar.sources
啊這個是最坑的,在網上搜都說analysis properties信息不全或者少什么properties文件來著。。結果各種嘗試都沒用,最后發(fā)現(xiàn)analysis properties是sonar.sources前面多了一個空格。。。想罵人有沒有。。
OK。。至此介紹完畢