【測試環(huán)境】1.使用docker-compose搭建Sonarqube平臺

sonarqube官網(wǎng)

1.什么是Sonarqube?

簡單來說就是一個靜態(tài)代碼掃描平臺柿冲。Sonarqube有五大特性,分別為Continuous Inspection兆旬、Detect Tricky Issues假抄、Multi-Language、DevOps Integration丽猬、Centralize Quality宿饱,如圖1所示。

圖1 Sonarqube特性.png

對于這五大特性脚祟,其中又包含不同的小特性谬以,如圖2所示。如需了解Sonarqube每種特性是做什么的由桌,請?jiān)L問Sonarqube官網(wǎng)为黎。
圖2 Sonarqube的小特性1.png

我們初步來看看Multi-Language這個特性,Sonarqube它支持超過20種編程語言行您,如圖3所示铭乾。

圖3 Sonarqube支持超過20種編程語言


2.IDEA與Jenkins中對應(yīng)的Sonarqube插件介紹

IDEA上有相關(guān)Sonarqube的插件,主要是SonarLintSonarQube Community Plugin娃循,如圖4所示炕檩。筆者主要使用的是SonarLint這個插件,如若想詳細(xì)了解SonarLint插件淮野,請?jiān)L問SonarLint相關(guān)網(wǎng)頁捧书。

圖4 IEAD上Sonarqube相關(guān)的插件

當(dāng)然,Sonarqube也支持當(dāng)前最火的持續(xù)集成工具Jenkins骤星。在Jenkins中常用的Sonarqube插件主要就是SonarQube Scanner for Jenkins经瓷,如圖5所示。

圖5 Jenkins中常用的Sonarqube插件


3.Sonarqube支持的平臺和數(shù)據(jù)庫

Sonarqube支持的平臺有Windows洞难、Max OS舆吮、Liunx和Docker等,支持的數(shù)據(jù)庫有Mysql队贱、PostgreSQL色冀、Oracle、SQLServer等柱嫌,如圖6所示锋恬。下載Sonarqube安裝文件,請點(diǎn)擊訪問Sonarqube官網(wǎng)的Download頁面;目前嬉挡,官網(wǎng)提供的Sonarqube安裝文件是一個ZIP的壓縮包。

圖6 Sonarqube支持的平臺和數(shù)據(jù)庫

4.Docker下安裝Sonarqube

由于禽拔,在Windows索守、Mac OS晕窑、Linux平臺搭建相對比較復(fù)雜。筆者選用Docker方式進(jìn)行Sonarqube環(huán)境的搭建操作卵佛。
【PS】筆者使用的Linux為Ubuntu Server 16.04.3

4.1 Sonarqube鏡像的搜索

對于Docker相關(guān)鏡像的搜索杨赤,主要分為兩種方式,在Docker Hub網(wǎng)頁中搜索和使用命令#docker search 鏡像名截汪。

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

圖7 Docker Hub上的Sonarqube官方鏡像

【方式2】使用#docker search sonarqube進(jìn)行sonarqube相關(guān)Images的搜索操作挫鸽;其中说敏,標(biāo)記為OFFICIAL 為官方提供的鏡像,如圖8所示丢郊。

#Code
#docker search搜索sonarqube相關(guān)鏡像

docker search sonarqube
圖8 docker search sonarqube 進(jìn)行sonarqube相關(guān)Images的搜索操作

4.2 Sonarqube鏡像的Pull

筆者使用的Docker是安裝在VM虛擬機(jī)上的Ubuntu Server 16.0.4.3盔沫,你可以通過命令# docker pull sonarqube將遠(yuǎn)程鏡像倉庫中的sonarqube鏡像pull拉取到本地。對于docker pull鏡像枫匾,下載慢的問題架诞,你可以使用阿里docker加速器 或者 使用daocloud提供的docker加速器

#Code
#docker pull拉取sonarqube鏡像

docker pull sonarqube
4.3 Sonarqube鏡像的Run運(yùn)行

Docker Hub的Sonarqube頁面中干茉,官方給出了如何使用Sonarqube鏡像的方式谴忧,如圖9所示。

圖9 Sonarqube鏡像的運(yùn)行方式

使用基本的Run方式后角虫,Sonarqube頁面如圖10所示沾谓。

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

從圖10,我們可以得知“基本的Run方式”是使用內(nèi)嵌數(shù)據(jù)庫戳鹅。缺點(diǎn)是內(nèi)嵌數(shù)據(jù)庫只能用于測試場景均驶,內(nèi)嵌數(shù)據(jù)庫無法擴(kuò)展,也無法升級到新版本的SonarQube枫虏,并且不能支持將你的數(shù)據(jù)遷移至其他數(shù)據(jù)庫引擎妇穴。

[建議] 采用圖9中的“關(guān)聯(lián)外部數(shù)據(jù)庫Run”的方式來使用Sonarqube,筆者推薦采用“Sonarqube+PostgreSQL”這樣的組合方式隶债。


5.對Sonarqube官方鏡像進(jìn)行改造

對于腾它,Sonarqube官方的Docker鏡像需要說明的是,鏡像版本更新為最新的V6.7.1,默認(rèn)語言為英文死讹,鏡像系統(tǒng)是基于Debian9,系統(tǒng)登錄端口為9000瞒滴,系統(tǒng)登錄的用戶名和密碼均為admin,數(shù)據(jù)庫的登錄連接用戶名、密碼和數(shù)據(jù)庫名均為sonar赞警。

序號 改造項(xiàng) 改造后的屬性值
1 默認(rèn)語言設(shè)置 中文
2 系統(tǒng)的鏡像源 阿里的Debian
3 缺失一些常用工具 (安裝)wget妓忍、curl稀并、vim、lrzsz
4 默認(rèn)時區(qū) Aisa/ShangHai

筆者在Sonarqube官方Docker Images的基礎(chǔ)上单默,結(jié)合下述改造點(diǎn)對Image進(jìn)行修改,最后docker commit到Docker Hub中忘瓦。筆者修改后的Sonarqube鏡像搁廓,請?jiān)L問筆者Docker Hub相關(guān)頁面,如圖11所示。

圖11 筆者改造后的Sonarqube鏡像頁面


6.docker-compose啟動sonarqube的yml文件詳情

postgres_sonarqube.yml文件地址

#這是一個利用docker-compose來構(gòu)建【sonarqube6.7+PostgreSQL】環(huán)境的yml文件

#sonarqube6.7的登錄用戶和密碼均為admin耕皮,登錄頁面的端口為9000境蜕。

#PostgreSQL數(shù)據(jù)庫的用戶和密碼均為sonar[可以在瀏覽器輸入ip+8088或navicat工具訪問數(shù)據(jù)庫]。

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

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參數(shù)能看到docker-compose運(yùn)行的日志信息
#或
docker-compose -f postgres_sonarqube.yml up -d #加-d參數(shù),在后臺運(yùn)行罚拟,不能看到docker-compose運(yùn)行的日志信息

【建議】 使用 #docker-compose -f postgres_sonarqube.yml up 的方式啟動台诗,如圖12所示。

圖12

8.docker-compose成功啟動的標(biāo)志

如果赐俗,docker-compose執(zhí)行yml文件無誤拉队,可見到成功后的Sonarqube頁面,如圖13所示阻逮。Sonarqube登錄頁面的用戶名和密碼均為admin粱快。

圖13 Sonarqube頁面

筆者中postgres_sonarqube.yml文件中還添加了一個叫adminer的鏡像,你可以通過8088端口在瀏覽器上訪問操作Postgres數(shù)據(jù)庫叔扼,如圖14所示事哭。

圖14 使用端口8088網(wǎng)頁訪問Postgres數(shù)據(jù)庫

如果,你不喜歡在網(wǎng)頁上操作數(shù)據(jù)庫瓜富,你也可以使用Navicat for PostgreSQL工具進(jìn)行相關(guān)操作鳍咱,下表是Postgres數(shù)據(jù)庫遠(yuǎn)程連接的相關(guān)配置信息。

Postgres數(shù)據(jù)庫遠(yuǎn)程連接 屬性
用戶名 sonar
密碼 sonar
端口號 5432
sonarqube使用的數(shù)據(jù)庫名 sonar

9.一鍵啟動Sonarqube環(huán)境的Shell腳本文件

9.1.Shell腳本文件內(nèi)容

Shell腳本屬性
名稱 ifSonarqube.sh
地址 https://github.com/jamesz2011/sonarqube/blob/master/ifSonarqube.sh
#此腳本---用來一鍵啟動Sonarqube環(huán)境

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



#判斷是否存在Sonarqube環(huán)境是否啟動
docker ps | grep sonarqube  postgres &> /dev/null
#如果沒有啟動食呻,使用docker-compose啟動相關(guān)的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環(huán)境有點(diǎn)費(fèi)時間!=霭每辟!"

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吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末干旧,一起剝皮案震驚了整個濱河市渠欺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椎眯,老刑警劉巖挠将,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胳岂,死亡現(xiàn)場離奇詭異,居然都是意外死亡舔稀,警方通過查閱死者的電腦和手機(jī)乳丰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來内贮,“玉大人产园,你說我怎么就攤上這事∫褂簦” “怎么了什燕?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長竞端。 經(jīng)常有香客問我屎即,道長,這世上最難降的妖魔是什么事富? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任技俐,我火速辦了婚禮,結(jié)果婚禮上统台,老公的妹妹穿的比我還像新娘虽另。我一直安慰自己,他們只是感情好饺谬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布捂刺。 她就那樣靜靜地躺著,像睡著了一般募寨。 火紅的嫁衣襯著肌膚如雪族展。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天拔鹰,我揣著相機(jī)與錄音仪缸,去河邊找鬼。 笑死列肢,一個胖子當(dāng)著我的面吹牛恰画,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓷马,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼拴还,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了欧聘?” 一聲冷哼從身側(cè)響起片林,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后费封,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體焕妙,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年弓摘,在試婚紗的時候發(fā)現(xiàn)自己被綠了焚鹊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡韧献,死狀恐怖寺旺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情势决,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布蓝撇,位于F島的核電站果复,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏渤昌。R本人自食惡果不足惜虽抄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望独柑。 院中可真熱鬧迈窟,春花似錦、人聲如沸忌栅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽索绪。三九已至湖员,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瑞驱,已是汗流浹背娘摔。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唤反,地道東北人凳寺。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像彤侍,于是被迫代替她去往敵國和親肠缨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容