天天看點

sonarqube安裝使用與jenkins內建

下載下傳位址:https://www.sonarqube.org/downloads/

wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.4.zip      #下載下傳到目前目錄

unzip sonarqube-6.4.zip  #解壓到目前目錄

cd sonarqube-6.4

vi conf/sonar.properties  #編輯配置檔案,加入分割線内代碼

---------------------------------------

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&allowMultiQueries=true

sonar.jdbc.username=root

sonar.jdbc.password=123456

sonar.web.port=9000

---------------------------------------

登陸到mysql,建立一個名為sonar的資料庫

create database sonar;

./bin/linux-x86-64/sonar.sh console &      #console 表示顯示啟動日志,用start也可以,&表示啟動完成後回到指令行

模式,不會卡在啟動完成界面,也不會因為退出指令行而終止程序;有些版本linux需要運作exit指令後再關閉ssh視窗,不然也會宕掉

啟動成功後通過 http://ip:9000 即可通路sonar,預設賬号admin,密碼admin,如果開啟了iptables或者firewalld防火牆,需要把9000端口加入允許通過清單

中文語言包:

在https://github.com/SonarQubeCommunity/sonar-l10n-zh上找到對應sonar版本的中午jar包下載下傳後上傳至sonar根目錄下的extensions\plugins目錄即可

版本更新:

1、複制 /conf/sonar.properties中相關配置檔案到新版本中(注意最好不要直接複制整個檔案)

2、到官網的插件版本矩陣https://docs.sonarqube.org/display/PLUG/Plugin+Version+Matrix 去檢視新版本與你所需要的插件版本對應關系,下載下傳插件jar包放入extensions/plugins中

3、啟動服務端./bin/linux-x86-64/sonar.sh start

4、http://localhost:9000/setup (localhost為你的sonar位址) 點選upgrade遷移資料庫(一般不會出問題無需備份,如确有需要可以備份資料庫)

配置maven以自動建構:

修改maven配置檔案settings.xml

<profiles>節點下添加如下内容:

<profile>

    <id>sonar</id>

    <properties>

       <!--預設資料庫配置-->

       <!-- <sonar.jdbc.url>jdbc:h2:tcp://localhost:8000/sonar</sonar.jdbc.url>

        <sonar.jdbc.driver>org.h2.Driver</sonar.jdbc.driver>

        <sonar.jdbc.username>sonar</sonar.jdbc.username>

        <sonar.jdbc.password>sonar</sonar.jdbc.password> -->

       <!--mysql資料庫配置-->

        <sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</sonar.jdbc.url>

        <sonar.jdbc.driver>org.mysql.jdbc.Driver</sonar.jdbc.driver>

        <sonar.jdbc.username>root</sonar.jdbc.username>

        <sonar.jdbc.password>cmiot</sonar.jdbc.password>

       <!--sonar生成配置-->

        <sonar.projectKey>${project.artifactId}-${project.version}</sonar.projectKey>

        <sonar.projectName>${project.artifactId}-${project.version}</sonar.projectName>

        <sonar.projectVersion>${project.version}</sonar.projectVersion>

        <sonar.sources>src/main/java</sonar.sources>

        <sonar.language>java</sonar.language>

        <sonar.sourceEncoding>UTF-8</sonar.sourceEncoding>

        <sonar.host.url>http://localhost:9000</sonar.host.url> <!-- Sonar伺服器位址 -->

        <sonar.scm.disabled>true</sonar.scm.disabled> <!-- 解決svn沖突問題 -->

 </properties>

</profile>

<activeProfiles>節點下添加如下内容: 

    <activeProfile>sonar</activeProfile>

運作maven指令  mvn sonar:sonar  即可把結果上傳至sonar伺服器。

內建jenkins:

在建構指令中加入如下代碼即可把單元測試覆寫率和sonar分析結果上傳至sonar伺服器:

cd ~/.jenkins/workspace/ProjectName

mvn org.jacoco:jacoco-maven-plugin:prepare-agent clean install

mvn sonar:sonar

遇到的錯誤:

後面遇到一個在錯誤:某些項目可以上傳報告至sonar某些項目不行,百思不得其解,苦逼了好久,後來在sonar根目錄下logs/web.log中發現以下資訊:Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1109540 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

才知道是mysql的max_allowed_packet參數過小造成的,于是在my.cnf的[mysqld]下找到該參數,原來為1M,改為2M。重新開機mysql,問題解決。

基于Docker安裝(未完善):

docker pull 等方法先下載下傳一個sonar鏡像

docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube    #前面的端口為外部端口,後面的為docker内部端口