一、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 默認(rèn)訪問端口9000.啟動后訪問地址http://ip:9000/可以出現(xiàn)sonar的首頁,下載中文安裝包(我這是已經(jīng)裝過了)
5. 為sonar配置數(shù)據(jù)庫地址冈欢,自行安裝mysql設(shè)置好庫名用戶名密碼歉铝,此處不再贅述,然后修改sonar解壓后文件中的配置凑耻,
conf下的sonar.properties文件,設(shè)置
sonar.jdbc.username=
sonar.jdbc.password=
sonar.jdbc.url=
sonar.web.javaOpts=(為了防止堆內(nèi)存不夠用可以適當(dāng)加大一點(diǎn))
sonar.web.host=0.0.0.0
sonar.web.port=9000
6. 設(shè)置后進(jìn)入bin目錄下重啟sonar柠贤,sh sonar.sh start
此時發(fā)現(xiàn)進(jìn)程起不來香浩,退出了,查看logs目錄下的sonar.log報錯 [o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 143
看網(wǎng)上資料說是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]邻吭。這里需要調(diào)整/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即可啟動,默認(rèn)端口8080
2. 進(jìn)入Jenkins控制臺千所,下載sonar和git對應(yīng)的插件狂魔,我這邊的是:
3. Jenkins的系統(tǒng)設(shè)置中添加SonarQube servers,配置路徑和認(rèn)證淫痰。
其中Server authentication token是在sonar中生成的最楷,生成方法:admin登陸
4. Jenkins的全局路徑中配置sonar-scanner的路徑如下:
5. 然后就可以愉快的在Jenkins中添加job并且對其進(jìn)行靜態(tài)代碼分析了。我的job的主要配置:
6. 配置完成job后待错,立即構(gòu)建管嬉,理論上就可以構(gòu)建成功,并且Jenkins出現(xiàn)可以鏈接過去的分析結(jié)果像醬紫
鏈接過去大概是醬紫:
但怎么會這么順利呢朗鸠,我這邊構(gòu)建出現(xiàn)的問題匯總?cè)缦买橇茫旅鎸?yīng)Jenkins日志報的錯和解決方法
1.?Caused by: java.io.IOException: Cannot run program "git" (in directory "/home/devs/.jenkins/workspace/itsm-sonar"): error=2, 沒有那個文件或目錄
很明顯,這是因?yàn)檠bJenkins那臺機(jī)器沒有安裝git烛占,裝一下即可
2.?Caused by: Not authorized. Please check the properties sonar.login and sonar.password.
這是因?yàn)樵贘enkins的? analysis properties沒有配置sonar.login and sonar.password. 加上就好
3.?Caused by: You must define the following mandatory properties for 'itsm': sonar.sources
啊這個是最坑的胎挎,在網(wǎng)上搜都說analysis properties信息不全或者少什么properties文件來著。忆家。結(jié)果各種嘗試都沒用犹菇,最后發(fā)現(xiàn)analysis properties是sonar.sources前面多了一個空格。芽卿。揭芍。想罵人有沒有。卸例。
OK称杨。。至此介紹完畢