使用 Docker 快速部署 Sonarqube 服务

环境信息

centos:7.4 Docker:18.06.1-ce Mysql: 5.7 (外部服务) Sonarqube:lts 这里就不再阐述centos与docker的安装。请各位自行www.google.com

一、【安装篇】Sonarqube服务端搭建

1、拉取镜像及中文插件

a、拉取sonarqube镜像:docker pull sonarqube:lts b、下载中文插件:wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.19/sonar-l10n-zh-plugin-1.19.jar

2、编写dockerfile

[bqadm@SZ3FSITMMT00AP0001 ~]$ sudo -i

[root@SZ3FSITMMT00AP0001 ~]# ll
total 11108
-rw-------. 1 root root     1415 Aug 15  2017 anaconda-ks.cfg
drwxr-xr-x  2 root root       59 Apr  8 15:48 docker_sonarqube

[root@SZ3FSITMMT00AP0001 ~]# cd docker_sonarqube/

[root@SZ3FSITMMT00AP0001 docker_sonarqube]# ll
total 44
-rw-r--r-- 1 root root   140 Apr  8 15:48 Dockerfile
-rw-r--r-- 1 root root 38307 Nov 22  2017 sonar-l10n-zh-plugin-1.19.jar

[root@SZ3FSITMMT00AP0001 docker_sonarqube]# vim Dockerfile

[root@SZ3FSITMMT00AP0001 docker_sonarqube]# cat Dockerfile
# base image
FROM sonarqube:lts
# put sonar-l10n-zh-plugin-1.19.jar
ADD sonar-l10n-zh-plugin-1.19.jar /opt/sonarqube/extensions/plugins/

[root@SZ3FSITMMT00AP0001 docker_sonarqube]# docker build -t docker_sqzh:v1 .

3、连接远程mysql服务

Mysql:10.83.74.31:13307 Docker宿主机:10.83.74.100 Docker0:172.17.0.1

[root@SZ3FSITMMT00AP0001 docker_sonarqube]# 
docker run -d --name sonarqube \
    -p 9000:9000 -p 9092:9092 \
    -e SONARQUBE_JDBC_USERNAME=sit_sonar \
    -e SONARQUBE_JDBC_PASSWORD=UjvwRV8SbKgtBMa \
    -e SONARQUBE_JDBC_URL="jdbc:mysql://10.83.74.31:13307/sit_sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \
    docker_sqzh:v1

[root@SZ3FSITMMT00AP0001 docker_sonarqube]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                            NAMES
c461cfb32ad2        docker_sqzh:v1      "./bin/run.sh"           9 seconds ago       Up 8 seconds        0.0.0.0:9000->9000/tcp, 0.0.0.0:9092->9092/tcp   sonarqube
cf3337de7bd9        mysql:5.7           "docker-entrypoint.s…"   7 months ago        Up 7 months         0.0.0.0:3306->3306/tcp, 33060/tcp                mysql-server

[root@SZ3FSITMMT00AP0001 docker_sonarqube]# docker logs c461cfb32ad2

4、创建令牌

mvn sonar:sonar \ -Dsonar.host.url=http://10.83.74.100:9000 \ -Dsonar.login=439cf8d6b2d2d2b272343dbd913738e1f29534f8

二、【配置篇】配置sonar

这里,我们采用阿里的p3c插件https://github.com/alibaba/p3c IDEA安装方法:https://blog.csdn.net/brycegao321/article/details/78246478 Eclipse安装方法:https://blog.csdn.net/zsy619/article/details/78899028 Sonarjava插件规则开发:https://docs.sonarqube.org/display/PLUG/Writing+Custom+Java+Rules+101

2.1 打包p3c插件

fork了github上面的一个源码

1、Package jar git clone https://github.com/mrprince/sonar-p3c-pmd.git mvn package

2、 修改dockerfile

3、 build images ,参见目录一 4、部署启动容器,参见目录一

5、Config Add new Quality Profiles - "p3c", click "Activate More" button, search keyword "[p3c]", active all rules.

2.2 配置规则

1、确认Jar包添加成功 在规则中搜索p3c,如果有结果说明jar包添加成功

2、质量配置中点击创建,新建新配置,名称随意,语言java,pmd不管

3、添加父类,继承sonar内置规则(新加的p3c规则也在其中,因为是内置配置所以其中的规则不能禁用/激活)

4、点击激活更多规则,点击所有p3c规则后面的活动按钮激活规则

5、回到质量配置页,将新建的包含p3c规则的配置设为默认 之后的代码检查中就会使用新建配置中的规则检查


评论(0 ) 点赞(15)


暂未登录,请登录之后发表评论。 QQ