目錄
配置多個模塊和單個模塊不一樣,多個模塊配置問題可以看下一篇
1.安裝插件
- checkstyle
- findbugs
- pmd
- jacoco(這個也可以安裝)
- sonar scanner
2.配置sonarQube服務
如果是配置本地,url不要寫127.0.0.1 訪問不了,要寫localhost;
注意:jenkins和sonar都是docker,且部署在同一臺機器上
這裏的配置就是在docker裏分配的地址
首先jenkins和sonar都要在同一網段內,可以使用命令
#新建bridge
docker network create dep_network
#將之前我們的jenkins加入該網絡
docker network connect dep_network jenkins
#將之前的sonar加入該網絡
docker network connect dep_network sonarqube
然後使用命令:
docker inspect sonarqube,查看地址
這張圖是docker inspect sonarqube
配置sonar scanner全局插件
3.創建自由風格或是maven項目
4.定時任務配置:
參數一共五個
-
分鐘 取值0-59
-
小時 取值 0-23
-
天 取值 1-31
-
月 取值 1-12
-
星期 取值0-7,0和7都表示星期天
第一種是在源碼發生改變時觸發:
第二種是週期性觸發:
5.sonar環境
6.編譯
對應上一篇說過的maven命令
clean package checkstyle:checkstyle findbugs:findbugs pmd:pmd org.jacoco:jacoco-maven-plugin:prepare-agent -Dmaven.test.failure.ignore=true
6.1指定pom.xml編譯
在一些情況下,我們會進行一些特殊配置,是的要執行的pom.xml文件不再根目錄,而像上面的配置,模式是從根目錄執行的
6.2 指定編譯的模塊或目錄(接着5.1)
參考了 https://segmentfault.com/q/1010000021576084/
注意:
使用命令 -pl 命令指定模塊編譯,執行入口pom.xml的路徑爲根目錄,就像上面我寫的是build/pom.xml,那麼我要編譯sso-web-login,對應的寫法“-pl ../sso-web-login -am”
就和build/pom.xml裏配置的一樣。
多個模塊就用逗號隔開:-pl ../sso-service,../sso-web-login -am
-pl 是指定要編譯的模塊;
-am 表示同時編譯它依賴的模塊;
jenkins 指定編譯,包含依賴模塊,我在編譯的pom.xml裏配置了所有模塊,比如eureka server這些都沒有編譯。
7.sonar scanner
分析命令說明
#項目的key(唯一)
sonar.projectKey=xxx
#項目名稱,可以隨意,
sonar.projectName=xxx
#項目版本
sonar.projectVersion=1.1.0-SNAPSHOT
#語言
sonar.language=java
#編碼
sonar.sourceEncoding=UTF-8
#有時會出現Please provide compiled classes of your project with sonar.java.binaries property報錯,所以加上掃描路徑
sonar.java.binaries=./target/classes
構建後加入checkstyle findbugs pmd報表輸出,默認就行,默認值是: **/checkstyle-result.xml
7.1 掃描指定模塊
對應5.2節,在配置了指定的模塊編譯,導致某些目錄沒有編譯(沒有字節碼文件),如果不配置soanr掃描的路徑就會報錯;soanr掃描需要一個binaries的屬性,就是需要編譯後的字節碼。
這裏用到還是sonarQube analysis with maven 功能,在最後增加如下屬性,指定掃描已經編譯成功的文件路徑,注意sonar.inclusions配置的路徑是相對項目的,不是相對build/pom.xml
-Dsonar.inclusions=sso-service/**/*,sso-web-login/**/*
同時,如果有配置5.1節(指定pom.xml)這裏也需要一樣的配置,沒有指定自定義pom,那麼這裏默認就行
掃描結果
8.配置前端掃描
配置掃描前端代碼,首先還是插件。
這裏我掃描的是vue,查看插件支持文件:
下面着有關目錄的看情況配置
sonar.projectKey=xxx
sonar.projectName=xxx
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
#爲項目根目錄名稱
sonar.modules=xxx/src
# JavaScript module
javascript-module.sonar.projectName=xxx
javascript-module.sonar.language=js
javascript-module.sonar.sources=.
javascript-module.sonar.projectBaseDir=src