緣起
時隔多年,又開始搭建Git Server 和 CI(以前的文章:用gitlabCI快速搭建一個GitServer與CI)。 現在的Gitlab已經不再是2015年那個時候的Gitlab了。這次,是需要添加SonarQube用於代碼檢查。
安裝
下載解壓到官網下載即可
cd /opt; wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.zip
unzip sonarqube-7.9.zip
新建用戶sonar
sudo useradd sonar
chown
sudo chown -R sonar:sonar /opt/sonarqube-7.19
數據庫處理
參考: https://developerinsider.co/install-sonarqube-on-ubuntu/
指的一提的是,如果創建了數據庫後運行了新版本的sonar,然後再運行老版本的sonar,而且使用同一個數據庫的話(user + database),會提示錯誤,這個錯誤在web.log中,注意看下圖的最後一行:
對於這種情況最簡單的解決方式就是重新創建一個數據庫用戶和database:
sudo -i
su - postgres
createuser sonar76
psql
然後在數據庫cli中:
ALTER USER sonar76 WITH ENCRYPTED password 'PASSWORD';
CREATE DATABASE sonar76 OWNER sonar76;
\q
更改配置:
sudo gvim sonarqube-7.9/conf/sonar.properties
使用sonar賬號嘗試啓動
sudo -i
su - sonar
/opt/sonarqube-7.9//bin/linux-x86-64/sonar.sh start
啓動後登錄localhost:9000 查看,如果有問題可以
/opt/sonarqube-7.9//bin/linux-x86-64/sonar.sh status
配合看logs裏面的log確定問題。
使用Apache反向代理
參考: https://www.howtoforge.com/how-to-install-sonarqube-on-ubuntu-1804/
C/C++檢查的插件
因爲默認的版本沒有,所以使用community的插件:
https://github.com/SonarOpenCommunity/sonar-cxx/wiki/SonarQube-compatibility-matrix
下載位於:
https://github.com/SonarOpenCommunity/sonar-cxx/releases
遇到的問題
root啓動的問題
查看sonar安裝目錄下面的logs裏面的es.log,可以看到無法使用root啓動
參考: SonarQube 7.7: Startup error: ‘can not run elasticsearch as root’
gitlab安裝插件
下載地址:https://github.com/gabrie-allaigre/sonar-gitlab-plugin
安裝C/C++和gitlab插件,到對應的官網下載然後放入到sonar裏面的extension/plugins裏面
然後在chown爲sonar即可。
然後重啓sonar,在administrator裏面查看:
使用
參考下面的兩個link:
https://www.jianshu.com/p/8a9f7f462ebb
https://docs.sonarqube.org/pages/viewpage.action?pageId=7996665
對於C和C++需要直接選擇一個後端,例如cppcheck,然後配置插件才能工作。
對於C語言和C++,因爲都是用.h,因此可能會出現問題:
SonarQube Language sonar.lang.patterns error
對此需要將sonar的C++裏面的文件的suffix配置更改,不能讓C和C++都匹配同樣的後綴。
參考: https://stackoverflow.com/questions/44412117/sonarqube-language-sonar-lang-patterns-error