DevOPS工具链中,在代码静态扫描这一环,SonarQube的使用算的是比较多的了,功能也比较强大。这篇文章,我们先介绍下基于docker的最新版7.9.1的安装、配置和使用。注意,从7.9版本开始,SonarQube只支持Oracle、SQLServer和PostgreSQL,MySQL不在支持,所以如果大家已经安装了旧版本,需要迁移数据库,迁移的方法,大家可以参见:https://github.com/SonarSource/mysql-migrator。另外PostgreSQL的安装和使用,不在本文的介绍范围,后续咋说,或者大家先自行学习。
基于Docker的安装
- 使用如下命令拉下最新的docker镜像
docker pull sonarqube:latest
- 因为我最终会把配置、扩展等存储到宿主机做持续话,所以先在宿主机上创建对应的文件路径
mkdir /sonar mkdir /sonar/data mkdir /sonar/conf mkdir /sonar/extensions mkdir /sonar/logs chown -R 999:999 /sonar
注意最后的更改权限必须做,不然会报权限错误
- 接下来使用如下的脚本创建sonarqube的容器:
docker run -d --name sonarqube \ -p 9000:9000 \ -v /sonar/conf:/opt/sonarqube/conf \ -v /sonar/data:/opt/sonarqube/data \ -v /sonar/logs:/opt/sonarqube/logs \ -v /sonar/extensions:/opt/sonarqube/extensions \ -e sonar.jdbc.username=postgres -e sonar.jdbc.password= -e sonar.jdbc.url="jdbc:postgresql://192.168.10.49/sonar_demo" \ --restart=on-failure:3 sonarqube
简单说下:sonarqube的默认端口为9000,映射到宿主机的端口也是9000;然后使用-v把刚才创建的文件路径挂载到容器的对应路径;最后的-e传入PostgreSQL的地址、用户名、密码和数据库等信息
- 如无错误,容器将启动成功,使用docker ps进行查看:
有错误的话,大家docker logs <容器id>查看下什么错误,自行解决下,或者后台发给我,我们一起看看。
整个安装过程还是很简单啊。完成之后,可以访问http://ip:9000,使用默认的管理员账号admin/admin进行登录:
与OpenLdap集成
上篇文章我们介绍了测试运维 | OpenLdap的安装和使用,今天我们先做和SonarQube的集成:
- 首先我们使用admin账号登录后,在后台的Administration - Security - Groups可以看到如下的Group:
望文生义,sonar-administrators就是sonar的管理员组;sonar-users就是一般权限的组。进一步查看组成员,我们发现admin账号的确在sonar-administrators组下:
从而印证了我们的猜测。
- 使用ApacheDirectoryStudio连接OpenLdap服务器之后,在ou=Groups下建立两个新组,ou=sonar-administrators,ou=sonar-users
- 在ou=People下建立一个新用户cn=superadmin,然后加入到ou=sonar-administrators下面;建立一个新用户cn=normaluser,然后加入到ou=sonar-users下面
- 在SonarQube里面,Administration - Marketplace,搜索并安装LDAP插件:
- 在/sonar/conf/sonar.properties文件里(如果没有则创建),加入如下内容:
- 同时,插件完成安装之后,重启SonarQube
- 重启完成之后,我们用superadmin账号登录,发现是管理员权限;用normaluser账号登录,发现是普通用户权限。
至此,SonarQube的安装和与OpenLdap的集成配置工作已经完成。
代码扫描
- 与jenkins的集成,大家可以参考DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查
- 与Maven项目的集成,修改maven的conf/settings.xml,注意按照如下的节点位置,添加内容:
<settings> <pluginGroups> <pluginGroup>org.sonarsource.scanner.maven</pluginGroup> </pluginGroups> <profiles> <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- Optional URL to server. Default value is http://localhost:9000 --> <sonar.host.url> http://192.168.10.49:9000 </sonar.host.url> </properties> </profile> </profiles> </settings>
- 运行如下命令进行扫描:
mvn clean verify sonar:sonar
如果得到如下错误:
No quality profiles have been found, you probably don't h
ave any language plugin installed.
那么先在SonarQube的Marketplace里面装下SonarJava插件:
- 扫描完成之后登陆SonarQube即可看到扫描的结果:
- 针对其他项目类型,比如Gradle、ANT等的支持,大家可以自行参考官方文档:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-gradle/
总结
文章介绍了基于Docker的SonarQube的安装方法及与OpenLdap的集成步骤,并介绍了Maven项目的扫描方法,给大家在DevOPS中开展代码的静态扫描开了个头,大家最好实际动手用起来。后续将进一步介绍SonarQube的配置和深入使用。
本文暂时没有评论,来添加一个吧(●'◡'●)