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

下载镜像:postgres:latest
sonarqube:7.9.3-community
sonarqube使用
浏览器输入http://ip:9090,开始初始化数据库,这个时间过程比较长,大概几分钟。初始化成功后进入登录界面,账号:admin 密码:admin
安装中文包

查看数据库配置

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

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

安装SonarQubeScanner软件
配置与SonarQube服务器连接

在项目添加SonaQube代码审查(流水线项目)
1)项目根目录下,创建sonar-project.properties文件
# must be unique in a given SonarQube instancesonar.projectKey=web_demo# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.sonar.projectName=web_demosonar.projectVersion=1.0# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.# This property is optional if sonar.modules is set.sonar.sources=.sonar.exclusions=**/test/**,**/target/**sonar.java.binaries=target/classessonar.java.source=1.8sonar.java.target=1.8# Encoding of the source code. Default is default system encodingsonar.sourceEncoding=UTF-8
2)修改流水线,加入SonarQube代码审查阶段
pipeline {agent anystages {stage('拉取代码') {steps {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']]])}}stage('编译构建') {steps {script {//引入sonarqubescanner工具scannerHome = tool 'sonar-scanner'}//引入SonarQube的服务器环境withSonarQubeEnv('sonarqube') {sh "${scannerHome}/bin/sonar-scanner"}}}stage('编译构建') {steps {sh 'mvn clean package'}}stage('项目部署') {steps {sh 'scp /var/jenkins_home/workspace/demo728_pipline/target/demo2-0.0.1-SNAPSHOT.jar root@192.168.154.147:/opt'sh 'ssh root@192.168.154.147 "java -jar /opt/demo2-0.0.1-SNAPSHOT.jar & "'}}}}
tool:代表引入jenkins的全局工具。
构建项目后查看SonarQube查看代码错误:
还有一些未验证:以后再说把!!!!

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

然后我们进入jenkins的系统管理-系统设置,找到gitlab的配置块:

找到quality gates - sonarqube的配置块:
找到sonarqube server的配置块:
待定
接下来,我们先建一个自由类型的项目,关键的配置如下:
新建任务—-创建任务(demo3)
gitlab的令牌:tpAmcxj4z2KYVkKnVCxy
sonarquble令牌:dfc001fb2407afd7818e49b5d31fd0641400039f
