SonarQube社區版分支插件V1.3.0更新


 

嘿,大家好。是否還記得在代碼質量平台集成的時候,想要把報告信息附加到合並請求中呢?當時一頓操作可惜翻車了,因為插件已經不支持7以上版本了。了解到有一個更好的插件能夠實現多分支展示和Pull request集成,一起看下吧!

 

 

插件安裝

下載release插件,現在最新版本是1.3.0, 下載后將jar包放到extensions/pluginslib/common目錄中。注意如果使用的其他用戶操作需要授權插件給sonarqube權限。此時重啟即可。

插件地址: https://github.com/mc1arke/sonarqube-community-branch-plugin/releases

 

多分支模式

談到多分支,其實社區版本僅支持一個分支,也就讓我們能夠對master分支進行掃描。有了這個分支插件,可以實現對多分支的掃描。每個分支對應相關的質量報告。還是很方便的。以前沒有這個插件的時候,每個分支創建了一個項目,非常難以管理哇。先來說下多分支這插件的用法。

非常簡單掃描的時候添加-Dsonar.branch.name指定當前的分支即可。如下基於GitLabCI的集成展示片段。

.codeanalysis-java:
stage: code_analysis
tags:
  - build
script:
  - echo $CI_MERGE_REQUEST_IID $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
  - "$SCANNER_HOME/bin/sonar-scanner -Dsonar.projectKey=${CI_PROJECT_NAME} \
                                    -Dsonar.projectName=${CI_PROJECT_NAME} \
                                    -Dsonar.projectVersion=${CI_COMMIT_REF_NAME} \
                                    -Dsonar.ws.timeout=30 \
                                    -Dsonar.projectDescription=${CI_PROJECT_TITLE} \
                                    -Dsonar.links.homepage=${CI_PROJECT_URL} \
                                    -Dsonar.sources=${SCAN_DIR} \
                                    -Dsonar.sourceEncoding=UTF-8 \
                                    -Dsonar.java.binaries=target/classes \
                                    -Dsonar.java.test.binaries=target/test-classes \
                                    -Dsonar.java.surefire.report=target/surefire-reports \
                                    -Dsonar.branch.name=${CI_COMMIT_REF_NAME}"
artifacts:
  paths:
    - "$ARTIFACT_PATH"

 

 

Pull Request集成

每次代碼合並的時候都需要進行codereview,我們如果能把合並原分支的代碼質量信息添加到合並請求中展示,這會很方便。

我們需要在Sonar配置集成信息。我試過了在配置文件中定義這些配置是不管用的,可能因為版本問題吧。那我們需要登錄UI系統設置 -> pull request -> provider=GitlabServer -> 找到gitlab集成填寫token和serverurl。

sonar.pullrequest.provider=GitlabServer
com.github.mc1arke.sonarqube.plugin.branch.pullrequest.gitlab.token=b8Gs1quX5GSeHwyuMWyY
com.github.mc1arke.sonarqube.plugin.branch.pullrequest.gitlab.url=http://192.168.1.200:30088

如果你想用接口直接該配置,下面的命令可以享受一下。

curl -u “ $ SONAR_API_TOKEN ” -X POST “ http://sonarqube.example.com/api/settings/set?key=sonar.pullrequest.provider&value=GitlabServer ” 
curl -u “ $ SONAR_API_TOKEN ” -X POST “ http: //sonarqube.example.com/api/settings/set?key=com.github.mc1arke.sonarqube.plugin.branch.pullrequest.gitlab.url&value=http://gitlab.example.com “
curl -u ” $ SONAR_API_TOKEN “ -X POST ” http://sonarqube.example.com/api/settings/set?key=com.github.mc1arke.sonarqube.plugin.branch.pullrequest.gitlab.token&value= $ GITLAB_TOKEN “-

 

接下來我們在GitLabCI中添加掃描參數。


"$SCANNER_HOME/bin/sonar-scanner -Dsonar.projectKey=${CI_PROJECT_NAME} \
-Dsonar.projectName=${CI_PROJECT_NAME} \
-Dsonar.projectVersion=${CI_COMMIT_REF_NAME} \
-Dsonar.ws.timeout=30 \
-Dsonar.projectDescription=${CI_PROJECT_TITLE} \
-Dsonar.links.homepage=${CI_PROJECT_URL} \
-Dsonar.sources=${SCAN_DIR} \
-Dsonar.sourceEncoding=UTF-8 \
-Dsonar.java.binaries=target/classes \
-Dsonar.java.test.binaries=target/test-classes \
-Dsonar.java.surefire.report=target/surefire-reports \
-Dsonar.pullrequest.key=${CI_MERGE_REQUEST_IID} \ 必填
-Dsonar.pullrequest.branch=${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} \ 必填
-Dsonar.pullrequest.base=${CI_MERGE_REQUEST_TARGET_BRANCH_NAME} \ 必填
-Dsonar.gitlab.ref_name=${CI_COMMIT_REF_NAME} \
-Dsonar.gitlab.commit_sha=${CI_COMMIT_SHA} \
-Dsonar.gitlab.project_id=${CI_PROJECT_PATH} \
-Dsonar.pullrequest.gitlab.repositorySlug=$CI_PROJECT_ID "

#-Dsonar.branch.name=${CI_COMMIT_REF_NAME} -X " 必須去掉

配置只有MR時運行此作業。

only:
- merge_requests

 

最終效果

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM