• sonarqube的安装部署以及集成jenkins


    sonarqube的安装部署以及如何集成jenkins自动化分析java项目

    sonarqube Linux版安装部署。

    1. SonarQube® 是一种自动代码审查工具,用于检测代码中的错误,漏洞和多余的代码。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。 比如:
    • SonarQube集成 gitlab,在分支推送的时候自动进行代码检查分析,生成代码报告。
    • SonarQube集成 jenkins,在代码构建的时候自动进行代码分析,生成代码报告。
      SonarQube是可以配合一切好用的CI/CD工具进行自动化分析代码并生成代码报告。
      官方网站:https://www.sonarqube.org/

    选择安装版本

    1. SonarQube 支持的数据库有:PostgreSQL,Microsoft SQL Server,Oracle,注意7.9版本已经不对MySql进行官方的支持了,如果执意要用 Mysql 可能会遇到很多坑。当然有的朋友想用Mysql数据库,那么可以选择安装 7.7 以下版本(包括7.7)。
    2. SonarQube 运行需要ES(ElasticSearch),当然这个不用我们安装,下载的安装包已经包含了ES。
    3. sonarqube7.8+版本不再支持mysql,以sonarqube7.7为例,支持的mysql版本是5.6和5.7,
      所以你安装7.8+以上版本就不能使用MySQL了。
      注:我这次没有使用数据库,你如果也不用关于数据库部分配置可以忽略。
      不过安装mysql数据库,配置可以看下,创建sonarqube使用的数据库和用户。
      在MySQL服务器上使用root账号登陆,执行如下命令:

    mysql> CREATE DATABASE IF NOT EXISTS sonarqube CHARACTER SET utf8 COLLATE utf8_general_ci;
    mysql> CREATE USER 'sonarqube'@'%' IDENTIFIED BY 'sonarqube,.123!A';
    mysql> grant all privileges on sonarqube.* to 'sonarqube'@'%' identified by 'sonarqube,.123!A' with grant option;

    mysql> flush privileges;
    grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option;
    flush privileges;库名:要远程访问的数据库名称,所有的数据库使用“”表名:要远程访问的数据库下的表的名称,所有的表使用“
    用户名:要赋给远程访问权限的用户名称
    IP地址:可以远程访问的电脑的IP地址,所有的地址使用“%”
    密码:要赋给远程访问权限的用户对应使用的密码

    安装方式

    1,通过下载压缩包,然后上传到服务器,然后解压安装,
    2,通过yum直接通过 下面的仓库下载。
    https://binaries.sonarsource.com/Distribution/sonarqube/
    # 下载源码压缩包
    wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.zip
    //https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.7.zip
    注: 本次下载6.7 版本。 因为java项目集成覆盖率插件使用的是 cobertura,如果选择的是其它的插件可以自行选择版本
    Sonarqube 中cobertura 覆盖率插件工具,只支持 6.7,7.0的 或以下版本的。若要使用 cobertura进行 覆盖率统计,请选择下载合适版本的sonarqube

    解压sonarqube源码包,并移动到指定路径
    unzip sonarqube-6.7.zip
    cp -r sonarqube-6.7 /usr/local/
    # 高版本中不能用 root 用户启动 SonarQube,需用非 root 用户启动
    # 创建用户以及更改目录的属主属组
    useradd sonarqube
    chown sonarqube.sonarqube -R /home/admin/sonarqube-6.7
    # 配置sonarqube配置文件
    # su - USERNAME切换用户后,同时切换到新用户的工作环境中。 切换到sonarqube用户下
    su - sonarqube
    cd /home/admin/sonarqube-6.7
    # 修改数据库配置 如果使用自带的数据库,可以不设置
    vim conf/sonar.properties
    sonar.jdbc.username=sonarqube #登录数据库的授权用户
    sonar.jdbc.password=sonarqube,.123!A #登录数据库的密码
    sonar.jdbc.url=jdbc:mysql://192.168.0.187:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    #jdbc:mysql://192.168.0.187:3306/sonarqube 中的sonarqube为创建的数据库名称
    sonar.web.host=0.0.0.0 #sonarqube服务监听本机所有ip
    sonar.web.port=9000 #sonarqube服务启动时监听的端口
    sonar.jdbc.driverClassName=org.gjt.mm.mysql.Driver
    # 启动sonarqube服务
    /home/admin/sonarqube-6.7/bin/linux-x86-64/sonar.sh start
    # 查看sonarqube服务启动状态
    /home/admin/sonarqube-6.7/bin/linux-x86-64/sonar.sh status
    # 查看sonarqube服务的日志文件
    tail -30 /home/admin/sonarqube-6.7/logs/sonar.log
    # 查看监听的8081端口
    lsof -i tcp:8081
    # 默认端口9000。可以自己在配置文件中修改端口。 conf/sonar.properties
    sonar.web.port=8081
    # 浏览器访问,后期可以使用nginx做反向代理配置域名进行访问
    http://ip:8081
    # 登录的用户名及密码均默认为admin

    重启 -每次要切换用户

    su -sonarqube
    /home/admin/sonarqube-6.7/bin/linux-x86-64/sonar.sh start

    插件安装

    在 administration→Marketplace,直接搜索 需要安装到插件
    1,Chinese 中文插件
    2,覆盖率工具 jacoco,cobertura
    3,代码检查插件 SonarJava
    注意:cobertura 覆盖率插件工具,只支持 6.7,7.0的 若要使用 cobertura进行 覆盖率统计,请选择下载合适版本的sonarqube
    部署扫描器sonar-scanner
    sonarqube通过扫描器扫描代码
    下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
    ### 下载扫描器
    wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744.zip
    ### 解压并移动到指定目录
    unzip sonar-scanner-cli-4.0.0.1744.zip
    cp -r sonar-scanner-4.0.0.1744 /usr/local/
    ### 修改配置文件
    sonar.host.url=http://localhost:8081
    sonar.sourceEncoding=UTF-8

    sonar-scanner

    优点:可以自定义参数。比如需要根据branch 形成不同的分析报告,使用该方式就更加方便
    缺点:配置项较多。
    其中: sonar.projectKey、sonar.projectName、sonar.language、sonar.sources、sonar.java.binaries都是必须的
    这里需要解释下sonar.projectKey 和sonar.projectName。 projectKey 是在sonar 平台上一个project 的内部唯一标志。projectName 是project 在sonar 平台上显示的名称,仅用来做显示名称,允许重复。sonar 平台通过projetKey来标记是否是同一个project,
    #### 1,当一个git 项目需要针对不同分支进行sonar 分析时,靠的就是projectKey的差异去创建。
    sonar.projectKey=sonarKey
    sonar.projectVersion=1.0
    sonar.sourceEncoding=UTF-8
    sonar.language=java
    sonar.sources=WORKSPACE/test/target/classes/
    sonar.test.inclusions=$WORKSPACE/test/src/test/
    #### 2,当一个git 项目需要针对不同分支进行sonar 分析时, 可以设置 sonar.branch 参数。(1可能不会生效)

    -Dsonar.branch=${currentBranches}

    sonar 针对java项目分析。
    1,可以不用上面到 scanner,直接使用 maven中到 sonar插件。
    2, sonar-project.properties配置文件也可以没有,可以写在执行命令中。

    mvn clean org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar -Dsonar.java.binaries=target/classs

    需要在maven setting文件中,配置sonar URL 账号 密码

      <profile>
                   <id>sonar</id>
                   <activation>
                       <activeByDefault>true</activeByDefault>
                   </activation>
                   <properties>
                       <!-- Optional URL to server. Default value is http://localhost:9000 -->
                       <sonar.host.url>
                         http://ip:9000
                       </sonar.host.url>
                     <sonar.login>
                       admin
                     </sonar.login>
                     <sonar.password>
                       admin
                     </sonar.password>
                   </properties>
           </profile>

    jenkin中使用sonar

    1,安装使用

    sonar-scanner  插件

    2,只是使用maven 命令

    mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar -Dsonar.projectName=${JOB_NAME} -Dsonar.java.binaries=target/sonar -Dsonar.host.url=http://host:端口/

    目前配置在maven setting中的sonar配置不生效 不知道什么情况
    所以需要在 命令行中指定 URL地址。 密码配置在Jenkins全局变量中 就OK了。 执行命令时他会自动去找,如果没有配置就会报错。不知道什么情况。

    Q1:Dsonar.java.binaries 未设置问题 (设置后如果出现报错情况 如下)

    Please provide compiled classes of yourproject with sonar.java.binaries property
    执行sonar 代码扫描时. 出现以下问题时

    mvn clean org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar

    Please provide compiled classes of yourproject with sonar.java.binaries property
    然后在网上大多是命令行添加如下

    -Dsonar.java.binaries=target/classs

    完整如下,

    mvn clean org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar -Dsonar.java.binaries=target/classs

    但是指定了后,运行期间并没有生产classs文件,所以需要修改如下。

    mvn clean org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar -Dsonar.java.binaries=target/sonar

    sonar 支持的插件表
    https://blog.csdn.net/lxlmycsdnfree/article/details/78282698
    参考:https://www.jianshu.com/p/ba49384733c2
    lamada表达式 jacoco可以支持
    https://blog.csdn.net/oschina_41790905/article/details/82627728
    参考:
    https://baijiahao.baidu.com/s?id=1597641627421414107&wfr=spider&for=pc
    https://www.jianshu.com/p/78ec15d2f332
    https://www.cnblogs.com/7tiny/p/11269774.html

  • 相关阅读:
    mongoDB在windows下安装和配置.
    node 中的定时器, nextTick()和setImmediate()的使用
    node 通过指令创建一个package.json文件
    node 中 npm报错 Error: ENOENT, stat 'C:UsersAdministratorAppDataRoaming pm'
    canvas之太阳系效果
    canvas之抒写文字
    canvas之绘制一张图片
    canvas之画一个三角形
    canvas之旋转一条线段
    unity3d 2d游戏制作的模式
  • 原文地址:https://www.cnblogs.com/trimphNuan/p/13864750.html
Copyright © 2020-2023  润新知