Sonarqube配置并整合Jenkins使用

80 阅读1分钟
https://binaries.sonarsource.com/?prefix=Distribution

sonarqube 7.8
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip
docker方式安装:
docker pull sonarqube:7.8-community

mkdir -p /devops/sonarqube/{sonarqube_conf,sonarqube_extensions,sonarqube_logs,sonarqube_data}

chmod 777 -R /devops/sonarqube/

docker run  -itd  --name sonarqube7 \
    -p 9000:9000 \
    -v /devops/sonarqube/sonarqube_conf:/opt/sonarqube/conf \
    -v /devops/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions \
    -v /devops/sonarqube/sonarqube_logs:/opt/sonarqube/logs \
    -v /devops/sonarqube/sonarqube_data:/opt/sonarqube/data \
    sonarqube:7.8-community

docker logs -f sonarqube7

// 中文插件
https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.28/sonar-l10n-zh-plugin-1.28.jar
// 进入目录
cd /devops/sonarqube/sonarqube_extensions/downloads
// 
wget https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.28/sonar-l10n-zh-plugin-1.28.jar
//
chmod +x sonar-l10n-zh-plugin-1.28.jar
//
docker restart sonarqube7


sonar-scanner-cli的安装:
# 进入实验目录 
cd /devops

## 下载包
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip

## 解压
unzip sonar-scanner-cli-4.6.2.2472-linux.zip

## 设置环境变量
vim /etc/profile

export SONAR_SCANNER_HOME=/data/devops6/sonar-scanner-4.8.0.2856-linux
export PATH=$SONAR_SCANNER_HOME/bin:$PATH

source /etc/profile 

## 测试生效
sonar-scanner -v

## 修改jdk版本
vi bin/sonar-scanner

### 编辑约第42行, true改成false
42 use_embedded_jre=false
43 if [ "$use_embedded_jre" = true ]; then
44   export JAVA_HOME="$sonar_scanner_home/jre"
45 fi

### 更改后,再次验证,发现变成了系统jdk版本。 更改生效。
sonar-scanner -v

sonarqube 7.8对应的sonar-scanner-cli
https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip

项目中添加 sonar-project.properties
将sonar账号和密码存储到Jenkins凭据中

# 定义唯一的关键字
sonar.projectKey=devops6-maven-service

# 定义项目名称
sonar.projectName=devops6-maven-service

# 定义项目的版本信息
sonar.projectVersion=1.0
 
# 指定扫描代码的目录位置(多个逗号分隔)
sonar.sources=.
 
# 执行项目编码
sonar.sourceEncoding=UTF-8

# 指定sonar Server
# sonar.host.url=http://192.168.1.200:9000

# 认证信息
# sonar.login=admin
# sonar.password=admin123

# java classes
sonar.java.binaries=target/classes
sonar.java.test.binaries=target/test-classes
sonar.java.surefire.report=target/surefire-reports

命令行方式:
stage("CodeScan"){
    steps{
        script{
            withCredentials([usernamePassword(credentialsId: '9ff42b72-597e-49dd-a62f-2553d48304fc', 
                                                passwordVariable: 'SONAR_PASSWD', 
                                                usernameVariable: 'SONAR_USER')]) {
                sh """
                    sonar-scanner \
                    -Dsonar.login=${SONAR_USER} \
                    -Dsonar.password=${SONAR_PASSWD} \
                    -Dsonar.host.url=http://192.168.1.200:9000 
                """
            }
        }
    }
}