Web自动化测试首页推荐程序员

【测试环境】1.使用docker-compose搭建Sonarq

2018-01-09  本文已影响121人  cooling2016
sonarqube官网

1.什么是Sonarqube?

简单来说就是一个静态代码扫描平台。Sonarqube有五大特性,分别为Continuous Inspection、Detect Tricky Issues、Multi-Language、DevOps Integration、Centralize Quality,如图1所示。

图1 Sonarqube特性.png
对于这五大特性,其中又包含不同的小特性,如图2所示。如需了解Sonarqube每种特性是做什么的,请访问Sonarqube官网
图2 Sonarqube的小特性1.png

我们初步来看看Multi-Language这个特性,Sonarqube它支持超过20种编程语言,如图3所示。

图3 Sonarqube支持超过20种编程语言

2.IDEA与Jenkins中对应的Sonarqube插件介绍

IDEA上有相关Sonarqube的插件,主要是SonarLintSonarQube Community Plugin,如图4所示。笔者主要使用的是SonarLint这个插件,如若想详细了解SonarLint插件,请访问SonarLint相关网页

图4 IEAD上Sonarqube相关的插件

当然,Sonarqube也支持当前最火的持续集成工具Jenkins。在Jenkins中常用的Sonarqube插件主要就是SonarQube Scanner for Jenkins,如图5所示。

图5 Jenkins中常用的Sonarqube插件

3.Sonarqube支持的平台和数据库

Sonarqube支持的平台有Windows、Max OS、Liunx和Docker等,支持的数据库有Mysql、PostgreSQL、Oracle、SQLServer等,如图6所示。下载Sonarqube安装文件,请点击访问Sonarqube官网的Download页面;目前,官网提供的Sonarqube安装文件是一个ZIP的压缩包。

图6 Sonarqube支持的平台和数据库

4.Docker下安装Sonarqube

由于,在Windows、Mac OS、Linux平台搭建相对比较复杂。笔者选用Docker方式进行Sonarqube环境的搭建操作。
【PS】笔者使用的Linux为Ubuntu Server 16.04.3

4.1 Sonarqube镜像的搜索

对于Docker相关镜像的搜索,主要分为两种方式,在Docker Hub网页中搜索和使用命令#docker search 镜像名

【方式1】在Docker Hub,你可以搜索到Sonarqube官方提供的Docker Images,如图7所示。

图7 Docker Hub上的Sonarqube官方镜像

【方式2】使用#docker search sonarqube进行sonarqube相关Images的搜索操作;其中,标记为OFFICIAL 为官方提供的镜像,如图8所示。

#Code
#docker search搜索sonarqube相关镜像

docker search sonarqube
图8 docker search sonarqube 进行sonarqube相关Images的搜索操作
4.2 Sonarqube镜像的Pull

笔者使用的Docker是安装在VM虚拟机上的Ubuntu Server 16.0.4.3,你可以通过命令# docker pull sonarqube将远程镜像仓库中的sonarqube镜像pull拉取到本地。对于docker pull镜像,下载慢的问题,你可以使用阿里docker加速器 或者 使用daocloud提供的docker加速器

#Code
#docker pull拉取sonarqube镜像

docker pull sonarqube
4.3 Sonarqube镜像的Run运行

Docker Hub的Sonarqube页面中,官方给出了如何使用Sonarqube镜像的方式,如图9所示。

图9 Sonarqube镜像的运行方式

使用基本的Run方式后,Sonarqube页面如图10所示。

#Sonarqube基本Run方式
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
图10 Sonarqube基本Run方式后的页面

从图10,我们可以得知“基本的Run方式”是使用内嵌数据库。缺点是内嵌数据库只能用于测试场景,内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎

[建议] 采用图9中的“关联外部数据库Run”的方式来使用Sonarqube,笔者推荐采用“Sonarqube+PostgreSQL”这样的组合方式。


5.对Sonarqube官方镜像进行改造

对于,Sonarqube官方的Docker镜像需要说明的是,镜像版本更新为最新的V6.7.1,默认语言为英文,镜像系统是基于Debian9,系统登录端口为9000,系统登录的用户名和密码均为admin,数据库的登录连接用户名、密码和数据库名均为sonar

序号 改造项 改造后的属性值
1 默认语言设置 中文
2 系统的镜像源 阿里的Debian
3 缺失一些常用工具 (安装)wget、curl、vim、lrzsz
4 默认时区 Aisa/ShangHai

笔者在Sonarqube官方Docker Images的基础上,结合下述改造点对Image进行修改,最后docker commit到Docker Hub中。笔者修改后的Sonarqube镜像,请访问笔者Docker Hub相关页面,如图11所示。

图11 笔者改造后的Sonarqube镜像页面

6.docker-compose启动sonarqube的yml文件详情

postgres_sonarqube.yml文件地址

#这是一个利用docker-compose来构建【sonarqube6.7+PostgreSQL】环境的yml文件

#sonarqube6.7的登录用户和密码均为admin,登录页面port为9000。

#PostgreSQL数据库的用户和密码均为sonar[可以在浏览器输入ip+8088或navicat工具访问数据库]。

#--------------------------------------------------------------------------------
#--------------------------------------------------------------------------------

version: "3.3"
services:
   db:
     image: postgres
     container_name: postgres
     ports:
        - "5432:5432" 
     environment:
       - POSTGRES_USER=sonar 
       - POSTGRES_PASSWORD=sonar
  
    adminer:
       image: adminer
       restart: always
       ports:
          - 8088:8080
  
    sonarqube6.7:
      image: jamesz2011/sonarqube6.7:latest
      container_name: sonarqube
      ports:
         - "9000:9000"
         - "9092:9092"
      volumes:
        - /etc/localtime:/etc/localtime:ro
      links:
        - db
      environment:
        - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar 

7.yml文件的使用方式

命令:# docker-compose f postgres_sonarqube.yml up。整个启动过程可能需要超过10分钟,请耐心等待。

CODE

#docker-compose启动postgres_sonarqube.yml

docker-compose -f postgres_sonarqube.yml up #不加-d参数能看到docker-compose运行的日志信息
#或
docker-compose -f postgres_sonarqube.yml up -d #加-d参数,在后台运行,不能看到docker-compose运行的日志信息

【建议】 使用 #docker-compose -f postgres_sonarqube.yml up 的方式启动,如图12所示。

图12

8.docker-compose成功启动的标志

如果,docker-compose执行yml文件无误,可见到成功后的Sonarqube页面,如图13所示。Sonarqube登录页面的用户名和密码均为admin

图13 Sonarqube页面
笔者中postgres_sonarqube.yml文件中还添加了一个叫adminer的镜像,你可以通过8088端口在浏览器上访问操作Postgres数据库,如图14所示。 图14 使用端口8088网页访问Postgres数据库

如果,你不喜欢在网页上操作数据库,你也可以使用Navicat for PostgreSQL工具进行相关操作,下表是Postgres数据库远程连接的相关配置信息。

Postgres数据库远程连接 属性
用户名 sonar
密码 sonar
端口号 5432
sonarqube使用的数据库名 sonar

9.一键启动Sonarqube环境的Shell脚本文件

9.1.Shell脚本文件内容

Shell脚本属性
名称 ifSonarqube.sh
地址 https://github.com/jamesz2011/sonarqube/blob/master/ifSonarqube.sh
#此脚本---用来一键启动Sonarqube环境

#----------------------------------------------------------



#判断是否存在Sonarqube环境是否启动
docker ps | grep sonarqube  postgres &> /dev/null
#如果没有启动,使用docker-compose启动相关的sonarqube容器
if [ $? -ne 0 ]
then
    echo "sonarqube is not up,we will start up it!!!"
   wget https://github.com/jamesz2011/sonarqube/raw/master/postgres_sonarqube.yml

  #docker-compose -f postgres_sonarqube.yml up -d
    docker-compose -f postgres_sonarqube.yml up


else
    echo "Sonarqube is up!!!"
fi




echo "---------------------------------------------------------"


echo "请等待10分钟,sonarqube环境有点费时间!!!"

echo "----------------------------------------------------------"

9.2.Shell脚本文件用法:

wget https://github.com/jamesz2011/sonarqube/raw/master/ifSonarqube.sh

sudo chmod a+x ifSonarqube.sh

sudo apt-get update && apt-get install -y dos2unix
sudo dos2unix  ifSonarqube.sh

sudo source ifSonarqube.sh

本文END,请尽情使用Sonarqube吧。

上一篇下一篇

猜你喜欢

热点阅读