zoukankan      html  css  js  c++  java
  • jenkins2.236 + sonarqube7.6 + sonar-scanner3.3的集成配置和生产环境使用示例

    jenkins2.236 + sonarqube7.6 + sonar-scanner3.3的集成配置和生产环境使用示例


    jenkins相关:
    jdk1.8.181 + maven 3.6.3 + tomcat8.0.53

    sonar相关:
    mysql5.7 + sonarqube7.6 + jdk1.8.181 + sonar-scanner


    jenkins集成sonar的主要步骤

    a.jenkins是一个持续集成的web系统,使用Java开发,需要安装jdk环境,我们使用 jdk1.8.201 + tomcat8.0.53的方式部署了jenkins,我们此处使用专门的apache用户来运行jenkins

    b.sonarqube是一个web平台,里面集成了很多功能,主要用来检查代码的一些常见问题,比如漏洞,语法错误等
    此次我们安装sonarqube7.6 + mysql5.7 ,sonarqube自己集成了elasticsearch,不需要单独安装,但是运行sonarqube需要非root用户,最好加一个账号专门来运行 sonarqube 这个web系统

    sonarqube可以和jenkins放同一个服务器中,也可以独立部署(建立独立部署)

    c.sonar-scanner 这个系统要部署在jenkins服务器中

    d.maven可以部署也可以不部署(此处我们也部署了,主要是用来构建java项目使用)

    e.安装jenkins for sonar这个插件,将sonar-canner和jenkins及sonnerqube 这几个系统关联起来


    本次我们已经部署好了jdk + jenkins + tomcat,只需要在上面集成 sonarqube


    一、安装配置sonarQube

    发现的问题:mysql8.0用不了,sonar6.7报未知错误,升级到7.6以后同样的配置就可以启动


    1.安装mysql5.7,并且添加sonar数据库和专用用户

    要安装指定的mysql版本,比如mysql要求5.6或者5.7 你要是使用mysql8.0 就会失败,测试过8.0会失败

    # 添加专用Mysql用户运行mysql程序

    useradd -u 501 -G users -s /sbin/nologin -M -d /usr/local/mysql/bin mysql
    /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data

    # 添加sonar数据库用户

    CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
    GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar@341Jpw';
    FLUSH PRIVILEGES;

    2.安装sonarqube

    wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.6.zip
    unzip sonarqube-7.6.zip
    mv sonarqube-7.6 /usr/local
    cd /usr/local
    ln -s sonarqube-7.6 sonar

    # 拷贝mysql驱动到指定位置

    mkdir /usr/local/sonar/extensions/jdbc-driver/mysql/
    cp /usr/local/sonar/lib/jdbc/mysql/mysql-connector-java-5.1.46.jar /usr/local/sonar/extensions/jdbc-driver/mysql/

    # 添加linux系统运行sonar专用用户

    groupadd sonar
    useradd sonar -g sonar
    chown -R sonar:sonar /usr/local/sonar
    chown -R sonar:sonar /usr/local/sonarqube-7.6

    # 修改sonar配置
    # vim /usr/local/sonar/conf/sonar.properties

    sonar.web.javaOpts=-server -Xms2G -Xmx2G -XX:+HeapDumpOnOutOfMemoryError
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar@341Jpw
    sonar.jdbc.url=jdbc:mysql://192.168.10.87:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    sonar.web.host=0.0.0.0
    sonar.web.port=9000

    # 启动打印日志
    su sonar
    sh /usr/local/sonar/bin/linux-x86-64/sonar.sh console

    # 后台运行sonar
    sh /usr/local/sonar/bin/linux-x86-64/sonar.sh start

    # 登录
    http://192.168.10.87:9000

    默认账号密码 admin/admin

    可以修改密码:

    3.汉化sonarqube
    找到对应的汉化版本安装包:https://github.com/xuhuisheng/sonar-l10n-zh/releases


    将下载的汉化插件包 sonar-l10n-zh-plugin-1.26.jar 放到sonar的extensions/plugins目录

    重启sonarqube
    [sonar@sz_xxgc_cms_jenkins02_10_87 local]$ sonar/bin/linux-x86-64/sonar.sh stop
    Stopping SonarQube...
    Waiting for SonarQube to exit...
    Stopped SonarQube.
    [sonar@sz_xxgc_cms_jenkins02_10_87 local]$ sonar/bin/linux-x86-64/sonar.sh start
    Starting SonarQube...
    Started SonarQube.


    添加token,并且加入到jenkins配置中


    在configure system中添加sonarqube的服务器配置,注意是系统配置,否则找不到

    SonarQube servers

    二、安装配置sonarScanner

    下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/

    # 此次我们安装sonaer-scanner3.3
    https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip

    1、解压sonar-scanner,配置环境变量

    unzip sonar-scanner-cli-3.3.0.1492-linux.zip
    mv  sonar-scanner-cli-3.3.0.1492-linux /usr/local/
    ln -s sonar-scanner-3.3.0.1492-linux sonar-scanner
    
    SONAR_SCANNER_HOME=/usr/local/sonar-scanner
    PATH=SONAR_SCANNER_HOME/bin:$PATH

    2、进入sonar-scanner解压缩之后的文件目录中,进入conf文件下,找到sonar-scanner.properties文件,并向其中添加MySQL数据库的连接配置信息如下:


    # vim /usr/local/sonar-scanner/conf/sonar-scanner.properties

    sonar.jdbc.url=jdbc:mysql://192.168.10.87:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    sonar.jdbc.username=sonar
    sonar.jdbc.password='sonar@341Jpw'
    sonar.sorceEncoding=UTF-8

    三、安装配置maven

    # vim /etc/profile

    MAVEN_HOME=/usr/local/maven
    PATH=$MAVEN_HOME/bin:$PATH

    修改settings.xml文件/usr/local/apache-maven-3.6.3/conf/settings.xml

    <pluginGroups>
    <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
    <profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <sonar.jdbc.url>jdbc:mysql://192.168.10.87:3306/sonar</sonar.jdbc.url>
            <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
            <sonar.jdbc.username>sonar</sonar.jdbc.username>
            <sonar.jdbc.password>sonar@341Jpw</sonar.jdbc.password>
            <sonar.host.url>http://192.168.10.87:9000/</sonar.host.url>
        </properties>
    </profile>
    </profiles>

    Global Tool Configuration中添加jdk,maven,sonar-canner的配置

    四、使用sonnar-scanner 对项目进行诊断

    有两种方式,一种是直接在linux shell命令行中调用命令扫描,另外一种是在jenkins中调用

    强烈建议先配置命令行调用,跑通了,再去配置jenkins和sonnaer集成,网上一堆配置sonar和jenkins集成的都是错的,把命令行的集成弄对了,jenkins集成参考即可


    示例一:命令行扫描php测试项目
    检测PHP项目,需要在sonar中先安装SonarPHP插件,github搜索php-sonar-runner项目,对这个项目进行检测
    https://github.com/hasanyousuf/php-sonar-runner-unit-tests

    unzip php-sonar-runner-unit-tests-master.zip
    cd php-sonar-runner-unit-tests-master
    /root/php-sonar-runner-unit-tests-master


    # 直接在php目录运行sonar-scanner,用于实现代码质量分析
    [rootphp-sonar-runner-unit-tests-master]# /usr/local/sonar-scanner/bin/sonar-scanner

    示例二:命令行扫描java项目
    修改maven源为aliyun否则很慢

     <!-- 阿里镜像仓库 -->
      <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>
                http://maven.aliyun.com/nexus/content/groups/public/
            </url>
            <mirrorOf>central</mirrorOf>
        </mirror>
      </mirrors>

    拉取一个开源项目 jmx_exporter 做测试
    
    git clone https://github.com/prometheus/jmx_exporter.git
    
    
    在项目目录创建扫描配置文件 jmx_exporter-master/sonar-project.properties,各配置项如下:
    
    [root@sz_xxgc_cms_jenkins02_10_87 jmx_exporter]# cat sonar-project.properties 
    # 项目名,如果项目名不存在会自动创建该项目
    sonar.projectKey=my_java
    # 源码路径,设置为当前目录
    sonar.sources=.
    # SonarQube 访问地址,根据实际情况填写
    sonar.host.url=http://192.168.10.87:9000
    # token,在 SonarQube 中创建的 token
    sonar.login=xx
    # 语言类型
    sonar.language=java
    # 二进制文件目录,就是 .class 文件的目录,只有部分项目需要该配置
    sonar.java.binaries=collector/target/classes,jmx_prometheus_httpserver/target/classes,jmx_prometheus_javaagent/target/classes
    # 源代码编码格式
    sonar.sourceEncoding=UTF-8
    
    
    进入项目目录
    
    cd /root/jmx_exporter-master/
    
    需要先编译项目,主要是为了生成 .classs 文件
    
    mvn clean package
    
    java项目代码目录下执行扫描
    
    [root@sz_xxgc_cms_jenkins02_10_87 jmx_exporter]# /usr/local/sonar-scanner/bin/sonar-scanner



    示例三:直接在jenkins中调用sonar


    jenkins中调用sonar的配置

    # 项目名,如果项目名不存在会自动创建该项目
    sonar.projectKey=${JOB_NAME}
    # 源码路径,设置为当前目录
    sonar.sources=.
    # SonarQube 访问地址,根据实际情况填写
    sonar.host.url=http://192.168.10.87:9000
    # token,在 SonarQube 中创建的 token
    sonar.login=token_xxx
    # 语言类型
    sonar.language=php
    
    # java项目相关的配置参考
    #sonar.language=java
    # 二进制文件目录,就是 .class 文件的目录,只有部分项目需要该配置
    #sonar.java.binaries=collector/target/classes,jmx_prometheus_httpserver/target/classes,jmx_prometheus_javaagent/target/classes
    # 源代码编码格式
    sonar.sourceEncoding=UTF-8

     在sonarqube的web中查看结果

  • 相关阅读:
    设置div内的内容不能被选中
    js中!和!!的区别及用法
    echars自定义提示框位置
    数组排序
    查询一个表的不同数据,显示到一个表
    document.body
    设置fixed,横向滚动条失效
    scrollTop
    JS 数组
    JS 数学函数
  • 原文地址:https://www.cnblogs.com/reblue520/p/14702171.html
Copyright © 2011-2022 走看看