【测试环境】1.使用docker-compose搭建Sonarqube平台

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,登录页面的端口为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吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容