阿里云centos7.4 使用Docker搭建SonarQube代码质量检查平台

1 篇文章 0 订阅
1 篇文章 0 订阅

1、配置docker环境启动SonarQube

  1. 安装docker环境
  2. 编写docker-compose
  3. 启动docker
  4. 查看启动日志

1.1、安装docker环境

参考文章阿里云Centos7.4安装docker
再安装docker-compose

[root@iz2ze4rdade76no6ly514vz ~]# yum install docker-compose

[root@iz2ze4rdade76no6ly514vz ~]# docker-compose -version
docker-compose version 1.18.0, build 8dd22a9

1.2. 编写docker-compose

其中数据库使用阿里云机器上安装的mysql数据库,也可以使用docker数据库,查看下方另一个代码配置。

#vi docker-compose.yaml

version: '3'

services:

  sonarqube:
    container_name: sonarqube
    image: sonarqube
    environment:
      sonar.jdbc.username: root
      sonar.jdbc.password: root
      sonar.jdbc.url: jdbc:mysql://ip:3306/sonar?useUnicode=true&characterEncoding=utf8
    ports:
      - 9000:9000
    restart:
      always
    volumes:
        - /path/to/logs:/home/yigou/sonarqube/logs
        - /path/to/extensions:/home/yigou/sonarqube/extensions

下面是使用postgres的docker数据库配置,两种方式都可以。


version: '3'
services:
  mydb:
    image: postgres:11
    volumes:
      - ./data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: sonar
      POSTGRES_DB: sonar
      POSTGRES_PASSWORD: sonar
    ports:
      - "5433:5432"
    restart:
      always
  sonarqube:
    image: sonarqube
    environment:
      sonar.jdbc.username: sonar
      sonar.jdbc.password: sonar
      sonar.jdbc.url: jdbc:postgresql://mydb:5432/sonar
    ports:
      - "9823:9000"
    restart:
      always
networks:
  postgresnetwork001:
    driver: 'local'

1.3. 启动docker

启动docker并查看日志

[root@iz2ze4rdade76no6ly514vz app]# docker-compose -f docker-compose.yaml up -d
[root@iz2ze4rdade76no6ly514vz app]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
2ba6c9e71762        sonarqube           "./bin/run.sh"      43 minutes ago      Up 43 minutes       0.0.0.0:9000->9000/tcp   sonarqube
[root@iz2ze4rdade76no6ly514vz app]# docker logs -f 2ba6c9e71762

2、创建项目分析环境

登录质量检查平台 http://127.0.0.1:9823 默认账户:admin/admin
在这里插入图片描述
创建分析的项目
在这里插入图片描述

在你的maven项目里,执行:

sonar:sonar -Dsonar.host.url=http://127.0.0.1:9823  -Dsonar.login=b291a9e2da54ae906616e8e81eebc4fdea1e54c1

3、分析项目

在eclipse中的maven项目,编写上述命令,如下图所示。
在这里插入图片描述

[INFO] Calculating CPD for 780 files
[INFO] CPD calculation finished
[INFO] Analysis report generated in 1316ms, dir size=19 MB
[INFO] Analysis report compressed in 7613ms, zip size=7 MB
[INFO] Analysis report uploaded in 25772ms
[INFO] ANALYSIS SUCCESSFUL, you can browse http://ip/dashboard?id=yigou
[INFO] Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
[INFO] More about the report processing at http://ip:9000/api/ce/task?id=AWqfpIhFtfQPayYsj_6t
[INFO] Analysis total time: 3:07.485 s
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:43 min
[INFO] Finished at: 2019-05-10T10:49:07+08:00
[INFO] Final Memory: 48M/1459M
[INFO] ------------------------------------------------------------------------

登录SonarQube后台查看项目
在这里插入图片描述

4、下一步计划

  • 配置Jenkins每日分析项目
  • 本地配置SonarQube进行代码检查

5、帮助

快速参考

  • 哪里寻求帮助:
    在SonarSource社区论坛,在Docker社区论坛,在DockerSlack社区,或Stackoverflow

  • 凡到文件的问题:
    https://github.com/SonarSource/docker-sonarqube/

  • 维护者:
    SonarSource

  • 支持的架构 ? 更多信息)
    amd64

  • 已发布的图像工件详细信息:
    repo-info repo的repos/sonarqube/目录(历史记录)
    (图像元数据,传输大小等)

  • 图片更新:
    官方图片PR带有标签library/sonarqube
    官方图片repo的library/sonarqube文件(历史)

  • 此描述的来源:
    docs repo的sonarqube/目录(历史)

  • 支持的Docker版本:
    最新版本(尽力降至1.6)

什么是SonarQube?

SonarQube是一种用于持续检查代码质量的开源产品。

商标

此Docker镜像包含SonarQube的Community Edition。

运行SonarQube

服务器以这种方式启动:

$ docker run -d --name sonarqube -p 9000:9000 sonarqube

默认情况下,您可以admin使用密码登录admin,请参阅身份验证文档。

分析Maven项目:

# On Linux:
mvn sonar:sonar
 
# With boot2docker:
mvn sonar:sonar -Dsonar.host.url=http://$(boot2docker ip):9000

要分析其他类型的项目,有关详细信息,请参阅分析源代码文档。

高级配置

选项1:数据库配置

默认情况下,映像将使用不适合生产的嵌入式H2数据库。

生产数据库被配置成与作为环境变量以下SonarQube属性:sonar.jdbc.username,sonar.jdbc.password和sonar.jdbc.url。

$ docker run -d --name sonarqube \
    -p 9000:9000 \
    -e sonar.jdbc.username=sonar \
    -e sonar.jdbc.password=sonar \
    -e sonar.jdbc.url=jdbc:postgresql://localhost/sonar \
    sonarqube

PS:请注意请保证事先您已经在生成环境上部署了postgresql,此处的username,password,localhost要改成生成环境上对应账户、密码、数据库IP

使用环境变量SONARQUBE_JDBC_USERNAME,SONARQUBE_JDBC_PASSWORD并且SONARQUBE_JDBC_URL已弃用,并将在将来的版本中停止工作。

这里可以找到更多资料Run SonarQube with a PostgreSQL database

选项2:通过Docker环境变量使用参数

您可以将sonar.配置属性作为Docker环境变量传递,如上面的示例所示,用于数据库配置。

选项3:使用绑定挂载的持久卷

图像包含SonarQube安装位置/opt/sonarqube。您可以使用绑定挂载的持久卷来覆盖选定的文件或目录,例如:

sonarqube_conf:/opt/sonarqube/conf:配置文件,如 sonar.properties
sonarqube_data:/opt/sonarqube/data:数据文件,例如嵌入式H2数据库和Elasticsearch索引
sonarqube_logs:/opt/sonarqube/logs
sonarqube_extensions:/opt/sonarqube/extensions:插件,如语言分析器
您还可以使用命令行中指定的绑定挂载配置,例如:

$ docker run -d --name sonarqube \
    -p 9000:9000 \
    -v /path/to/conf:/opt/sonarqube/conf \
    -v /path/to/data:/opt/sonarqube/data \
    -v /path/to/logs:/opt/sonarqube/logs \
    -v /path/to/extensions:/opt/sonarqube/extensions \
    sonarqube
选项4:自定义图像

在某些环境中,准备包含配置的自定义映像可能更有意义。A Dockerfile实现这一点可能很简单:

 FROM sonarqube:7.4-community
COPY sonar.properties /opt/sonarqube/conf/

然后,您可以使用以下内容构建和尝试图像:

 $ docker build --tag=sonarqube-custom .
$ docker run -ti sonarqube-custom

管理

管理指南可以在这里找到Documentation

License

查看此映像中包含的软件的许可证信息

与所有Docker映像一样,这些映像也可能包含其他许可证(例如来自基本分发版的Bash等,以及所包含的主要软件的任何直接或间接依赖关系)。

这是能够自动检测一些额外的许可信息可能中找到的repo-info版本库的sonarqube/目录。

对于任何预先构建的图像使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。

SonarQube 能检测如下问题
  • 糟糕的复杂度分布:文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试

  • 重复:显然程序中包含大量复制粘贴的代码是质量低下的,sonar 可以展示源码中重复严重的地方

  • 缺乏单元测试:sonar 可以很方便地统计并展示单元测试覆盖率

  • 没有代码标准:sonar 可以通过 PMD、CheckStyle、Findbugs 等等代码规则检测工具规范代码编写

  • 没有足够的或者过多的注释:没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降。而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷

  • 潜在的 bug:sonar 可以通过 PMD、CheckStyle、Findbugs 等等代码规则检测工具检测出潜在的 bug。

翻译自dockerhub-sonarqube

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值