SonarQube docker

2019年12月18日 作者 刘剑
## 当前使用

### 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=c1688e10298a756650b3e0b9278695b712591c3e
      
      
    报错: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 添加到配置文件中并重启
```

- 日志
```
    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=c1688e10298a756650b3e0b9278695b712591c3e
    
    	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>
```