编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

DevOPS | 代码静态扫描工具SonarQube的安装和初步使用

wxchong 2024-08-01 02:50:00 开源技术 22 ℃ 0 评论

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的集成配置工作已经完成。

代码扫描

<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的配置和深入使用。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表