美文网首页
Jenkins+SonarQube代码质量检查自动化

Jenkins+SonarQube代码质量检查自动化

作者: 小小的小帅 | 来源:发表于2019-06-10 12:37 被阅读0次

    安装 方法一

    参考
    Jenkins的安装很简单,官网提供的安装方式如下

    sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
    sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
    sudo yum install jenkins
    
    • 启动/停止/重启命令 须使用root权限
      service jenkins start/stop/restart
    • 设置自启动
      sudo chkconfig jenkins on
    • 问题解决
    1. Failed to start LSB: Jenkins Automation Server. jenkins启动失败的解决办法
      Jenkins 未加载到 java 环境的问题, candiddates 参数内追加 java 的环境变量即可;
      命令
     vi /etc/rc.d/init.d/jenkins 
    /usr/local/jdk1.8.0_141/bin/java
    

    如下图


    添加Java环境变量.png

    安装 方法二

    1. 到Jenkins的网站下载一个war包,下载地址
      https://jenkins.io/download/
      jenkins.war下载后放置在/usr/local/src 目录下
      Windows新建一个startup.bat文件,Linux新建一个startup.sh文件,其内容如下
    @echo off
    set JENKINS_HOME="/root/.jenkins"
    set JAVA_HOME="/usr/local/src/jdk1.8.0_141"
    %JAVA_HOME%\bin\java -jar jenkins.war --httpPort=8081 --prefix=/ --controlPort=8083
    
    1. 官方启动方式
      java -jar jenkins.war --httpPort=8081 --prefix=/ --controlPort=8083
      这样启动方式,在关闭控制台或者ssh断开服务器链接后 jenkins也就自动关闭了。
    • 在Linux下,可以使用以下方式启动。
      nohup java -jar jenkins.war --httpPort=8081 --prefix=/ --controlPort=8083 &
      启动后 会生成一个nohup.out输出,需要的话,可以tail -f nohup.out实时查看日志
      然后访问 ip:8081
    jenkins日志问题

    [DNSQuestion@1549353466 type: TYPE_IGNORE index 0, class: CLASS_UNKNOWN index 0, name: ]
    上面内容主要是因为DNS查询错误,返回了所有的日志数据,解决方法:
    【系统管理】=》【system log】=>【日志级别】=》【Name: javax.jmdns,Level: off】

    SonarQube代码质量检查

    1. 软件版本:sonarqube-6.7.5,sonar-runner-dist-2.4 sonar-scanner-3.0.3.778
      sonarqube-6.7.5 下载
      链接:https://pan.baidu.com/s/1UrhPygfE7KWC_sf7Fd0wJA 提取码:6075
    下载Sonar-Runner:
    cd /usr/local/src
    wget http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip
    sonar-scanner下载扫描器地址:
    wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778-linux.zip
    Scanner下载
    https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
    https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
    
    1. 解压
      unzip sonarqube-6.7.5.zip
      unzip sonar-scanner-cli-3.3.0.1492-linux.zip
      cp -R sonarqube-6.7.5 /usr/local/sonarqube-6.7.5
      mv sonar-scanner-3.3.0.1492-linux /usr/local/sonar-scanner
    2. 配置环境变量
      vim /etc/profile
    export SONAR_HOME=/usr/local/sonarqube-6.7.5
    export SONAR_SCANNER_HOME=/usr/local/sonar-scanner
    PATH=$PATH:$SONAR_HOME/bin:$SONAR_SCANNER_HOME/bin
    

    source /etc/profile

    1. 新建数据库
    CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 
    CREATE USER 'sonar' IDENTIFIED BY 'sonar';
    GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
    GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
    FLUSH PRIVILEGES;
    
    1. 添加用户组和用户
      groupadd sonar
      添加用户mysql 到用户组mysql
      useradd -g sonar sonar
      passwd sonar
      输入密码 123456
    2. 配置sonar.properties
      cd /usr/local
      vim sonarqube-6.7.5/conf/sonar.properties
      修改如下
    #数据库的账号密码,刚才创建的
    sonar.jdbc.username=sonar       
    sonar.jdbc.password=sonar
    #连接数据库
    sonar.jdbc.url=jdbc:mysql://xxxx:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    #驱动程序类名,其实可以不写的
    #sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
    sonar.sorceEncoding=UTF-8
    sonar.login=admin
    sonar.password=admin
    #开启端口
    sonar.web.port=9000
    
    1. 启动SonarQube注意事项
    • SonarQube 启动不能用root启动,所以新建一个用户。
    • 必须先启动elasticsearch,才能在启动sonar。
      sonar文件目录里面有elasticsearch这个目录。
    启动elasticsearch
    1. 编写配置文件elasticsearch.yml
      cd /usr/local
      chown -R sonar:sonar sonarqube-6.7.5
      chmod 777 -R sonarqube-6.7.5
      vim sonarqube-6.7.5/elasticsearch/config/elasticsearch.yml
      开启端口和指定服务 去掉注释修改
    network.host: 0.0.0.0
    http.port: 9200
    
    1. 启动elasticsearch
      su sonar 切换用户
      ./sonarqube-6.7.5/elasticsearch/bin/elasticsearch -d -d代表后台运行
    解决问题一:sonar用户内存过低

    max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    elasticsearch启动时遇到的错误
    问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144;

    • 解决方式一:
      切换到root用户
      执行命令:
      sysctl -w vm.max_map_count=262144
      查看结果:
      sysctl -a|grep vm.max_map_count
      显示:
      vm.max_map_count = 262144
      上述方法修改之后,如果重启虚拟机将失效
    • 解决方式二:
      在 /etc/sysctl.conf文件最后添加一行
      vm.max_map_count=262144
      即可永久修改
      elasticsearch安装后启动时候,遇到此问题
    解决问题三:由于内存不足原因引起的elasticsearch自动退出

    max file descriptors [65535] for elasticsearch process is too low
    问题翻译过来就是:elasticsearch用户拥有的可创建文件描述的权限太低,至少需要65536;

    • 解决办法:
      切换到root用户修改
      vim /etc/security/limits.conf
      在最后面追加下面内容
    *** hard nofile 65536
    *** soft nofile 65536
    
    解决问题三:由于内存不足原因引起的elasticsearch自动退出

    /usr/local/sonarqube-6.7.5/elasticsearch/config
    vi jvm.options
    修改

    -Xms1g
    -Xmx1g
    
    启动sonar(用sonar用户启动)

    su sonar
    cd /usr/local/sonarqube-6.7.5/bin/linux-x86-64/
    ./sonar.sh start

    • 其他命令 sonar日志、启动,关闭、重启、状态,dump
      ./sonar.sh console | start | stop | restart | status | dump
      可设置参数max_allowed_packet控制代码检查量
      访问:http://129.211.24.177:9000
    汉化sonar

    汉化参考

    安装sonar-scanner扫描(方式一)

    1. 解压文件(上面已解压,并配置环境变量)
      sonar-scanner -v
    INFO: Scanner configuration file: /usr/local/sonar-scanner/conf/sonar-scanner.properties
    INFO: Project root configuration file: /usr/local/sonar-project/xy99/sonar-project.properties
    INFO: SonarQube Scanner 3.3.0.1492
    INFO: Java 1.8.0_121 Oracle Corporation (64-bit)
    INFO: Linux 3.10.0-514.26.2.el7.x86_64 amd64
    

    cd /usr/local/sonar-scanner

    1. 编辑文件
      vim conf/sonar-scanner.properties
    sonar.sourceEncoding=UTF-8
    sonar.host.url=http://129.211.24.177:9000
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar
    sonar.jdbc.url=jdbc:mysql://129.211.24.177:3306/sonar?useUnicode=true&characterEncoding=utf8
    sonar.login=admin
    sonar.password=admin
    
    1. 创建一个sonar-project.properties
      vim sonar-project.properties
    sonar.projectKey=xy99
    sonar.projectName=xy99
    sonar.projectVersion=4.0.0  
    # Set modules IDs  
    sonar.modules=core,core-db
    # Modules inherit properties set at parent level  
    sonar.sources=src/main/java  
    #sonar.tests=src/test/java  
    sonar.java.binaries=target/classes
    sonar.language=java  
    sonar.login=admin
    sonar.password=admin
    #编码格式
    #sonar.sourceEncoding=UTF-8
    
    1. 开始扫描
      cd /usr/local/sonar-scanner/bin
      ./sonar-scanner

    问题一

    ERROR: You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.sources
    ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
    

    要在项目文件下执行,如我的项目放在/usr/local/sonar-project目录下则
    cd /usr/local/sonar-project/xy99
    sonar-scanner 配置了环境变量

    Jenkins配置Sonar

    参考

    1. 登录Sonar
      http://129.211.24.177:9000
      开启scm


      SCM.png
    2. 获取jenkins登入token


      token.png
    3. 配置SonarQube server 系统管理-->系统设置

      SonarQube server
    4. 配置maven和SonarQube Scanner 系统管理-->全局工具配置

      maven和SonarQube Scanner
    5. 安装 Sonar 插件
      系统管理--->管理插件。找到插件SonarQube Scanner进行安装。

    6. Execute SonarQube Scanner加入到jenkins项目中


      Execute SonarQube Scanner
    • 配置如下
    sonar.projectKey=xy99
    sonar.projectName=xy99
    sonar.projectVersion=4.0.0  
    # Set modules IDs  
    sonar.modules=core,core-db
    # Modules inherit properties set at parent level  
    sonar.sources=src/main/java  
    #sonar.tests=src/test/java  
    sonar.java.binaries=target/classes
    sonar.language=java  
    sonar.login=admin
    sonar.password=admin
    

    相关文章

      网友评论

          本文标题:Jenkins+SonarQube代码质量检查自动化

          本文链接:https://www.haomeiwen.com/subject/mtcutctx.html