17

Docker搭建代码检测平台SonarQube并检测maven项目

 4 years ago
source link: https://www.pkslow.com/archives/docker-sonarqube
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

1 前言

良好的代码习惯是一个优秀程序员应该具备的品质,但靠人的习惯与记忆来保证代码质量,始终不是一件靠谱的事。在计算机行业应该深知,只要是人为的,都会有操作风险。本文讲解如何通过 Docker 搭建代码检测平台 SonarQube ,并使用它来检测 maven 项目的代码。

2 Docker安装SonarQube

2.1 安装

通过 Docker 安装,方便快捷,不需要时直接删掉容器和镜像就好了。

# 拉取Sonar镜像
docker pull sonarqube:8.3.1-community
# 运行实例
docker run --name sonarqube -p 9000:9000 -d sonarqube:8.3.1-community

接着访问: http://localhost:9000/ 就可以了,默认管理员用户和密码为: admin/admin

这里选择免费的社区版 Community ,另外还有 DeveloperEnterprise 等收费版本,功能更强大,具体差别如下:

zAZzUfz.png!web

2.2 指定数据库

一般我们会自己启动一个数据库如 OracleMySQLPostgreSQL 。相关系统信息可以在 Administration-System 查看,我们不指定的话,默认是使用内嵌的 H2 数据库。如果要指定其它数据库,启动Docker时需要指定:

-e SONARQUBE_JDBC_USERNAME="xxx" \
-e SONARQUBE_JDBC_PASSWORD="***" \
-e SONARQUBE_JDBC_URL="jdbc:mysql://xxx"

使用 H2 数据库有会以下限制:

内嵌数据库只能用于测试场景。内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎。

所以建议实际使用时,不要使用内嵌的 H2 数据库。

2.3 进入容器

通过命令:

$ docker exec -it 容器ID bash

bash-5.0# ls
COPYING        bin            conf           data           elasticsearch  extensions     lib            logs           temp           web
bash-5.0#

可以进入 SonarQube 容器。在目录 /opt/sonarqube 可以查看配置文件、插件、数据文件和日志文件等,实际使用应该映射到宿主机的目录上,这样重新启动一个实例,数据和配置都还在。

2.4 安装插件

SonarQube 提供了强大的插件管理功能,以中文语言包为示例,讲解如何安装插件:

Administration-Marketplace-Plugins ,在搜索框输入 Chinese 就可以选择安装了。

nyaYJvM.png!web

当状态显示为 Install Pending 时,说明插件安装完成,点击 Restart Server 即可生效。

3 通过maven检测代码

3.1 通过账号密码使用

指定 SonarQube 平台的地址,并指定用户名和密码,就能检测代码了,具体命令如下:

mmvn clean install sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=admin -Dsonar.password=admin

3.2 通过Token令牌使用

当然,直接使用 admin 并暴露密码并不是一个好的习惯,可以通过 配置-权限-用户 来创建用户,并创建令牌。

2u6rM33.png!web

复制令牌: 9656c84090b2481db6ea97b6d14d87d546bff619

这样,就可以通过令牌来操作了:

mmvn clean install sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=9656c84090b2481db6ea97b6d14d87d546bff619

执行命令后,就会在界面上自动新建了一个项目,并给出检测结果:

IRrqyeY.png!web

Sonar 提供了许多指标如测试覆盖率、复杂度等,这能大大帮助我们写出更好的代码:

2YneQzy.png!web

4 总结

SonarQube 功能强大,是 DevOps 的重要工具之一,需要了解和掌握。

欢迎访问 南瓜慢说 www.pkslow.com 获取更多精彩文章!

欢迎关注微信公众号< 南瓜慢说 >,将持续为你更新...

ENvAvm2.jpg!web

多读书,多分享;多写作,多整理。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK