SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前
支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检
测。
官网:https://www.sonarqube.org/

安装版本

image.png

下载镜像:postgres:latest
sonarqube:7.9.3-community

sonarqube使用

浏览器输入http://ip:9090,开始初始化数据库,这个时间过程比较长,大概几分钟。初始化成功后进入登录界面,账号:admin 密码:admin
image.png

安装中文包

image.png

查看数据库配置

image.png

另外我们需要在sonarqbue端创建一个token供jenkins使用:登录sonarqube后,点击个人头像那个地方,在My Account页的tokens创建token。
image.png
token要记下来后面要使用
sonarquble令牌:dfc001fb2407afd7818e49b5d31fd0641400039f

jenkins添加代码审查

image.png
首先,我们在jenkins中安装如下几个插件:———注意如果要本地安装类似于maven需要把依赖都下下来

  1. gitlab plugin: https://wiki.jenkins-ci.org/display/JENKINS/GitLab+Plugin。此插件的主要作用是与gitlab集成,可以在代码提交、merge request创建等情况下触发jenkins进行构建,简单讲,就是在gitlab的webhook下触发jenkins构建
  2. sonarqube scanner for jenkins: http://redirect.sonarsource.com/plugins/jenkins.html。此插件的作用是调用sonar scanner进行代码扫描,并可以将jenkins构建的结果以comments的形式添加到merge request中。从而方便后续code reviewer的查看。
  3. sonar quality gates plugins: https://github.com/jenkinsci/sonar-quality-gates-plugin/blob/master/README.md。此插件的作用是读取一个sonar project的quality gates结果,如果是失败,则更改jenkins 构建的结果为失败或者不稳定。

安装SonarQube Scanner插件

image.png

安装SonarQubeScanner软件

image.png

配置与SonarQube服务器连接

image.png

添加sonarqube凭证
image.png

在项目添加SonaQube代码审查(流水线项目)

1)项目根目录下,创建sonar-project.properties文件
image.png

  1. # must be unique in a given SonarQube instance
  2. sonar.projectKey=web_demo
  3. # this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
  4. sonar.projectName=web_demo
  5. sonar.projectVersion=1.0
  6. # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
  7. # This property is optional if sonar.modules is set.
  8. sonar.sources=.
  9. sonar.exclusions=**/test/**,**/target/**
  10. sonar.java.binaries=target/classes
  11. sonar.java.source=1.8
  12. sonar.java.target=1.8
  13. # Encoding of the source code. Default is default system encoding
  14. sonar.sourceEncoding=UTF-8

2)修改流水线,加入SonarQube代码审查阶段

  1. pipeline {
  2. agent any
  3. stages {
  4. stage('拉取代码') {
  5. steps {
  6. checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: '12612dfa-8b38-4d08-a41f-ee6e125c1640', url: 'http://192.168.154.139/itdemo_group/cicd-demo.git']]])
  7. }
  8. }
  9. stage('编译构建') {
  10. steps {
  11. script {
  12. //引入sonarqubescanner工具
  13. scannerHome = tool 'sonar-scanner'
  14. }
  15. //引入SonarQube的服务器环境
  16. withSonarQubeEnv('sonarqube') {
  17. sh "${scannerHome}/bin/sonar-scanner"
  18. }
  19. }
  20. }
  21. stage('编译构建') {
  22. steps {
  23. sh 'mvn clean package'
  24. }
  25. }
  26. stage('项目部署') {
  27. steps {
  28. sh 'scp /var/jenkins_home/workspace/demo728_pipline/target/demo2-0.0.1-SNAPSHOT.jar root@192.168.154.147:/opt'
  29. sh 'ssh root@192.168.154.147 "java -jar /opt/demo2-0.0.1-SNAPSHOT.jar & "'
  30. }
  31. }
  32. }
  33. }

tool:代表引入jenkins的全局工具。

构建项目后查看SonarQube查看代码错误:
image.png

还有一些未验证:以后再说把!!!!

image.png

安装完成之后,我们需要在gitlab端创建一个token供jenkins使用:登录gitlab之后,点击个人头像那个地方,在settings页的access token创建token,注意至少勾选api那的复选框

image.png

然后我们进入jenkins的系统管理-系统设置,找到gitlab的配置块:
SonarQube与质量门禁的使用 - 图15
SonarQube与质量门禁的使用 - 图16

找到quality gates - sonarqube的配置块:
image.png

找到sonarqube server的配置块:
待定

接下来,我们先建一个自由类型的项目,关键的配置如下:
新建任务—-创建任务(demo3)

gitlab的令牌:tpAmcxj4z2KYVkKnVCxy

sonarquble令牌:dfc001fb2407afd7818e49b5d31fd0641400039f