SonarQube和jenkins(SonarQube Scanner)集成

sonarQube安装

drwxr-xr-x 8 sonar root  130 8月   6 10:29 bin
drwxr-xr-x 2 sonar root   48 10月  9 17:09 conf
                      sonar.properties
-rw-r--r-- 1 sonar root 7651 8月   6 10:20 COPYING
drwxr-xr-x 4 sonar root   43 10月  9 17:11 data
drwxr-xr-x 7 sonar root  141 8月   6 10:29 elasticsearch
drwxr-xr-x 5 sonar root   54 10月  9 17:11 extensions
                     plugins
drwxr-xr-x 9 sonar root  132 8月   6 10:29 lib
drwxr-xr-x 2 sonar root 4096 10月 10 10:56 logs
                    sonar.log
                    web.log
                    es.log
drwxr-xr-x 9 sonar root 4096 10月 10 16:38 temp
drwxr-xr-x 9 sonar root 4096 8月   6 10:29 web

主要问题:
    root用户无法启动elasticsearch问题
    mysql连接问题(没有创建空库)
    版本太低问题
    内存溢出
    主机无法分配
        java.net.BindException: Cannot assign requested address: bind
排错说明:
    可以先跟着sonar.log日志:
        如果报了es错误,可以去查看es.log;
        如果报了web错误,那么就是查看web.log

  • 配置sonar.properties (使用mysql数据库[创建sonar数据库] 和 主机配置)
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

sonar.web.host=192.168.120
  • 插件 (存放extensions/plugs/下面)

java语言插件列表

-rw-r--r-- 1 root  root  2145122 10月 10 14:09 aemrules-0.9.jar
-rw-r--r-- 1 root  root 12623869 10月 10 16:03 checkstyle-sonar-plugin-4.11.jar
-rw-r--r-- 1 root  root     9690 10月 10 16:07 guava-helper-sonarqube-plugin-1.0.6.jar
-rw-r--r-- 1 sonar root       92 8月   6 10:20 README.txt
-rw-r--r-- 1 root  root  9800486 10月 10 16:07 sonar-findbugs-plugin-3.8.0.jar
-rw-r--r-- 1 root  root  9022405 10月 10 16:05 sonar-java-plugin-5.7.0.15470.jar
-rw-r--r-- 1 root  root    38307 10月  9 17:12 sonar-l10n-zh-plugin-1.19.jar
-rw-r--r-- 1 root  root  4596956 10月 10 16:06 sonar-pmd-plugin-2.6.jar

  • 改变所有者
    • 创建sonar用户
    • 将解压的文件夹里所有的文件(包括自己上传的jar插件)都给sonar用户
      • 因为elasticsearch不允许root用户执行

useradd sonar 
passwd sonar
chown -R sonar /opt/sonarqube

  • 启动

/opt/sonarqube/bin/linux-x86-64/sonar.sh   start

console | start | stop | restart | status | dump

  • 日志

 tail -f /opt/sonarqube/logs/sonar.log

  • 防火墙

    https://www.cnblogs.com/moxiaoan/p/5683743.html    
    * 开放
        firewall-cmd --zone=public --add-port=9000/tcp --permanent
    * 重新载入
        firewall-cmd --reload
    * firewall-cmd --zone= public --query-port=9000/tcp

  • 访问
  • 配置
    • 登入成功后  

1. 开启scm 

SonarQube和jenkins(SonarQube Scanner)集成

2. 获取jenkins登入token

SonarQube和jenkins(SonarQube Scanner)集成

 

Jenkins集成

  • 安裝插件
  • Jenkis 配置 SonarQube Server
    • 系统管理 ->系统设置 -> SonarQube servers

SonarQube和jenkins(SonarQube Scanner)集成

  • 加入到jenkins项目中

SonarQube和jenkins(SonarQube Scanner)集成

sonar.projectKey=dev-scloud-example
sonar.projectName=scloud-example
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.sources=./scloud-example-service/src/
sonar.java.binaries=./scloud-example-service/target/classes/
sonar.language=java

问题

  • scm没有开启
    • SonarQube scanner exited with non-zero code: 1
  • 语言插件没有上传

    Caused by: No quality profiles have been found, you probably don't have any language plugin installed.
    ERROR: 
    ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
    ERROR: SonarQube scanner exited with non-zero code: 1
    Notifying upstream projects of job completion
    Finished: FAILURE

  • 插件下载不下来

由于网络原因,应用市场的插件一直下载不了,请在插件的首页找到github中release下的jar,然后上传到sonarQube插件文件夹下面

SonarQube和jenkins(SonarQube Scanner)集成

本地搭建scanner

  • 下载scanner或者直接下载jenkins里面的 (/var/lib/jenkins/tools 里面)

2018-10-10  10:15               120 .installedFrom
2018-10-11  17:19    <DIR>          bin
2018-10-11  17:19    <DIR>          conf   

                                                             sonar-scanner.properties
2018-10-11  17:19    <DIR>          lib

  • 配置环境变量到 bin   

检测

sonar-scanner -v 

  • 修改配置文件sonar-scanner.properties

sonar.host.url=http://192.168.133:9000
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://192.168.1.125:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

  • 在项目里面下添加配置sonar-project.properties

sonar.projectKey=dev-example-basic
sonar.projectName=scloud-example
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.sources=./
sonar.java.binaries=./
sonar.language=java

  • 打开cmd , cd到项目下,然后执行  sonar-scanner