前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SonarQube社区版分支插件V1.3.0更新

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

作者头像
DevOps云学堂
发布2020-05-08 11:40:57
3K22
发布2020-05-08 11:40:57
举报
文章被收录于专栏:DevOps持续集成

嘿,大家好。是否还记得在代码质量平台集成的时候,想要把报告信息附加到合并请求中呢?当时一顿操作可惜翻车了,因为插件已经不支持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的集成展示片段。(下面代码块用手滑一下

代码语言:javascript
复制
.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。

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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中添加扫描参数。

代码语言:javascript
复制
"$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时运行此作业。

代码语言:javascript
复制
only:
  - merge_requests

解决PC端阅读体验<DevOps运维笔记/>已上线,点击阅读原文访问。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps持续集成 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 插件安装
  • 多分支
  • Pull Request集成
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档