SonarQube

2019年12月31日 作者 刘剑

当前使用

169机器上运行安装

因为 sonarqube6.7 最低需要mysql5.6, 所以在168启动了mysql 5.6 docker 3307
docker run -d --name sonarqube6.7 \
-p 9000:9000 -p 9092:9092 \
-e SONARQUBE_JDBC_USERNAME=root \
-e SONARQUBE_JDBC_PASSWORD=123456 \
-e SONARQUBE_JDBC_URL='jdbc:mysql://192.168.8.168:3307/sonar?useUnicode=true&characterEncoding=utf8' \
-v /etc/localtime:/etc/localtime \
sonarqube:6.7

报错: Unrecoverable indexation failures
removing the data/es5 folder after encountering the same error and restarting sonar.
  • 访问: http://192.168.8.169:9000/ admin/admin , 生产token: root / c1688e10298a756650b3e0b9278695b712591c3e
  • (可以不做) 在maven setting.xml添加profile

通过maven插件运行:

    mvn sonar:sonar \
    -Dsonar.host.url=http://192.168.8.169:9000 \
    -Dsonar.login=164430350d3ae7722ff4f847009ef6ae0f15d750

    报错:Failed to upload report - 500: An error has occurred. Please contact your administrator
    如果你是用的是MySQL,设置数据库允许接收的最大包,然后重启数据库,然后重启服务器
    需要设置mysql max_allowed_packet (mysql docker 有详细介绍)

    报错:The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size. Increase the redo log size using innodb_log_file_size

    将innodb_log_file_size=256M 添加到配置文件中并重启

sonar-scanner扫描其他语言工程

  • 安装

    下载 https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip
    
    添加bin 到path
    
    运行
    sonar-scanner \
    -Dsonar.projectKey=vue-customer-center \
    -Dsonar.sources=./src
  • 配置

    vim /usr/local/sonar-scanner/conf/sonar-scanner.properties
    
    sonar.host.url=http://192.168.8.169:9000
    sonar.sourceEncoding=UTF-8
    sonar.login=164430350d3ae7722ff4f847009ef6ae0f15d750
  • 日志

    docker logs -f -t --tail 3000 6face22d4f34

定时shell 运行sonar

  • 01-sonar.sh

    #!/bin/bash
    
    cd /eship/code/eship
    
    for file in $(ls | grep -E 'eship|author')
    do
    cd $file
    mvn sonar:sonar -Dsonar.host.url=http://192.168.8.169:9000 -Dsonar.login=164430350d3ae7722ff4f847009ef6ae0f15d750
    
    cd ..
    done
    
    cd /eship/code
    
    for file in $(ls | grep -E 'vue')
    do
    cd $file
    sonar-scanner -Dsonar.projectKey=$file -Dsonar.sources=./src
    
    cd ..
    done
  • crontab -e

    0 23 * * * sh /eship/01-sonar.sh

其他

  • 注意:如果将容器删掉重新起来,rules等信息会丢失导致执行失败
  • 配置maven的settings文件
    <profile>
    <id>sonar</id>
    <activation>
    <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
    <sonar.jdbc.url>jdbc:mysql://192.168.8.168:3307/sonar</sonar.jdbc.url>
    <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
    <sonar.jdbc.username>root</sonar.jdbc.username>
    <sonar.jdbc.password>123456</sonar.jdbc.password>
    <!-- SERVER ON A REMOTE HOST -->
    <sonar.host.url>http://192.168.8.169:9000</sonar.host.url>
    </properties>
    </profile>