溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

jenkins代碼管理

發(fā)布時(shí)間:2020-06-24 15:58:25 來源:網(wǎng)絡(luò) 閱讀:3325 作者:mb5cd21e691f31a 欄目:云計(jì)算

持續(xù)集成之代碼質(zhì)量管理-Sonar [三]

Sonar 介紹
Sonar 是一個(gè)用于代碼質(zhì)量管理的開放平臺。通過插件機(jī)制, Sonar 可以集成不同的測試工
具,以及持續(xù)集成工具。與持續(xù)集成工具(例如 Hudson/Jenkins 等)不同, Sonar
并不是簡單地把不同的代碼檢查工具結(jié)果(例如 FindBugs, PMD 等)直接顯示在 Web 頁面上,而
是通過不同的插件對這些結(jié)果進(jìn)行再加工處理,通過量化的方式度量代碼質(zhì)量的變化,從而可以方
便地對不同規(guī)模和種類的工程進(jìn)行代碼質(zhì)量管理。
在對其他工具的支持方面, Sonar 不僅提供了對 IDE 的支持,可以在 Eclipse 和 IntelliJ
IDEA 這些工具里聯(lián)機(jī)查看結(jié)果;同時(shí) Sonar 還對大量的持續(xù)集成工具提供了接口支持,可以很方
便地在持續(xù)集成中使用 Sonar。
此外, Sonar 的插件還可以對 Java 以外的其他編程語言提供支持,對國際化以及報(bào)告文檔化
也有良好的支持。

Sonar 部署

Sonar 的相關(guān)下載和文檔可以在下面的鏈接中找到: http://www.sonarqube.org/downloads/。
需要注意最新版的 Sonar 需要至少 JDK 1.8 及以上版本。
上篇文章我們已經(jīng)可以成功的使用 git 進(jìn)行拉去, Sonar 的功能就是來檢查代碼是否有 BUG。除了
檢查代碼是否有 bug 還有其他的功能,比如說:你的代碼注釋率是多少,代碼有一些建議,編寫語
法的建議。所以我們叫質(zhì)量管理
Sonar 還可以給代碼打分,并且引用了技術(shù)宅的功能(告訴你有很多地方?jīng)]改)
Sonar 部署

   89  cd /usr/src/sonar
   90  rz  上傳所需軟件包
軟件包我們通過 wget 或者下載, rz 上傳到服務(wù)器

#軟件包下載: https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.6.zip
jenkins代碼管理

   95  unzip sonarqube-5.6.zip   解壓軟件包
   96  mv sonarqube-5.6 /usr/local/sonarqube
   97  cd /usr/local/sonarqube/
98  ln -s /usr/local/sonarqube/bin/linux-x86-64/sonar.sh  /usr/local/bin/ 鏈接命令目錄

準(zhǔn)備 Sonar 數(shù)據(jù)庫
如果沒有數(shù)據(jù)庫請執(zhí)行 yum install -y mariadb mariadb-server

  102  cd /usr/src/ MySQl5.7RPM
  103  rz  上傳所需rpm包
  105  cd MySQl5.7RPM/
  107  ls

jenkins代碼管理

  108  yum -y localinstall mysql-community-*  安裝此目錄的MySQL包
  109  systemctl  start  mysqld              開啟mysql 
100 systemctl enable mariadb         設(shè)置開機(jī)自啟

登錄數(shù)據(jù)庫并操作
110 mysqladmin -u root password 123 設(shè)置MySQL數(shù)據(jù)庫密碼
jenkins代碼管理
可以看到這里有問題。解決:
111 grep password /var/log/mysqld.log
jenkins代碼管理
紅框中的就是密碼
112 mysql -u root -p'yq%9XsyE:r&g' 登陸數(shù)據(jù)庫
alter user 'root'@'localhost' identified by '123.com'
jenkins代碼管理
alter user 'root'@'localhost' identified by 'Xgp@123.com';
jenkins代碼管理

create database sonar character set utf8 collate utf8_general_ci;   創(chuàng)建數(shù)據(jù)庫
grant all on sonar.* to 'sonar'@'%' identified by 'Sonar@123.com';    設(shè)置授權(quán)用戶
grant all on sonar.* to 'sonar'@'localhost' identified by 'Sonar@123.com';  設(shè)置授權(quán)用戶

配置 Sonar

  113  cd /usr/local/sonarqube/bin/
  115  ls 

jenkins代碼管理

  116  ln -s /usr/local/sonarqube/bin/linux-x86-64/sonar.sh /usr/local/bin/ 鏈接命令目錄
  117  vim conf/sonar.properties   修改sonar配置文件
sonar.jdbc.username=sonar            #14用戶名
sonar.jdbc.password=Sonar@123.com     #15密碼

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance   #23去注釋
sonar.web.host=0.0.0.0   #99去注釋
sonar.web.port=9000    #106去注釋

配置 Java 訪問數(shù)據(jù)庫驅(qū)動(可選)
默認(rèn)情況 Sonar 有自帶的嵌入的數(shù)據(jù)庫,那么你如果使用類是 Oracle 數(shù)據(jù)庫,必須手動復(fù)制驅(qū)動類到${SONAR_HOME}/extensions/jdbc-driver/oracle/目錄下,其它支持的數(shù)據(jù)庫默認(rèn)提供了驅(qū)動。其它數(shù)據(jù)庫的配置可以參考官方文檔:
http://docs.sonarqube.org/display/HOME/SonarQube+Platform
啟動 Sonar并查看端口
你可以在 Sonar 的配置文件來配置 Sonar Web 監(jiān)聽的 IP 地址和端口,默認(rèn)是 9000 端口。
118 sonar.sh start 啟動sonar
119 netstat -anpt | grep 9000 查看端口
jenkins代碼管理
120 tailf /usr/local/sonarqube/logs/sonar.log 查看sonar日志
#端口是 9000 哦!
Web 登陸: IP:9000
提示:
sonar 跟 jenkins 類似,也是以插件為主
sonar 安裝插件有 2 種方式:第一種將插件下載完存放在 sonar 的插件目錄,第二種使用 web 界面來使用安裝存放插件路徑[/usr/local/sonarqube/extensions/plugins/]
jenkins代碼管理
安裝中文插件
登陸:用戶名: admin 密碼: admin
jenkins代碼管理
jenkins代碼管理
sonar安裝‘中文’和php插件

  132  cd /usr/local/sonarqube/extensions/plugins/    進(jìn)入sonar宿主目錄  
  133  cp /usr/src/sonar/sonar-l10n-zh-plugin-1.11.jar   ./  拷貝中文插件到sonar目錄
134 cp /usr/src/sonar/sonar-php-plugin-2.9-RC1.jar  ./  拷貝php插件到sonar目錄需要重啟才會生效
  134  sonar.sh restart                                重啟sonar
  135  netstat -anpt | grep 9000             查看端口

生效后如下圖:
jenkins代碼管理

下載掃描器插件

  140  cd /usr/src/sonar/  進(jìn)入剛剛上傳sonar包的目錄
  141  unzip sonar-scanner-cli-3.3.0.1492-linux.zip  解壓掃描插件
  142  mv sonar-scanner-3.3.0.1492-linux/ /usr/local/sonar-scanner  移動解壓文件到sonar宿主目錄
  143  cd /usr/local/sonar-scanner/  進(jìn)入sonar宿主目錄
  145  ln -s /usr/local/sonar-scanner/bin/sonar-scanner  /usr/local/bin/ 鏈接命令目錄
  146  ln -s /usr/local/sonar-scanner/bin/sonar-scanner  /usr/bin/ 鏈接命令目錄

我們要將掃描器和 sonar 關(guān)聯(lián)起來

143  cd /usr/local/sonar-scanner/
144  vim conf/sonar-scanner.properties  修改sonar配置文件
sonar.host.url=http://localhost:9000  #去注釋  sonar 地址
sonar.sourceEncoding=UTF-8  #8去注釋  字符集
以下四行來自/usr/ldocal/sonarqube/conf/sonar.properties   
sonar.jdbc.username=sonar   #數(shù)據(jù)庫賬號
sonar.jdbc.password=Sonar@123.com  #數(shù)據(jù)庫密碼
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance   #數(shù)據(jù)庫連接地址

#打開注釋即可

我們現(xiàn)在需要找一個(gè)代碼進(jìn)行分析。

sonar 插件提供了一個(gè)代碼的庫
github:https://github.com/SonarSource/sonar-examples
我們下載軟件包: https://github.com/SonarSource/sonar-examples/archive/master.zip
解壓
150 unzip testalyzer-master.zip 解壓測試文件
151 cd /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests 進(jìn)入測試文件
jenkins代碼管理
163 sonar-scanner 測試代碼文件
jenkins代碼管理
提示: 我們什么都不指定就會在當(dāng)面目錄下掃描 sonar-project.properties 文件,根據(jù)配置文件進(jìn)行掃描工作。掃描之后我們在 web 界面上就可以看到代碼的掃描結(jié)果這里的名字,版本 都是在 sonar-project.properties 文件中定義的
jenkins代碼管理
質(zhì)量閾幫我們設(shè)定好一個(gè)閾值,超過相應(yīng)的閾值就算有 bug
jenkins代碼管理
測試第二個(gè)文件
cd /usr/src/sonar/testalyzer-master/projects/languages/javascript/javascript-sonar-runner
sonar-scanner 測試
jenkins代碼管理
jenkins代碼管理

為了讓 jenkins 可以在構(gòu)建項(xiàng)目的時(shí)候執(zhí)行 sonar,所以我們需要在 jenkins 上安裝插件

現(xiàn)在就可以進(jìn)行配置,讓 jenkins 和 sonar 結(jié)合在一起。這樣我們構(gòu)建項(xiàng)目的時(shí)候就會進(jìn)行代碼檢測
http://192.168.1.40:8081/ jdk安裝插件SonarQube Scanner. Gerrit Tr igge 需要一個(gè)一個(gè)來
jenkins代碼管理
安裝完畢之后:現(xiàn)在就可以進(jìn)行配置,讓 jenkins 和 sonar 結(jié)合在一起。這樣我們構(gòu)建項(xiàng)目的時(shí)候就會進(jìn)行代碼檢測
系統(tǒng)管理---系統(tǒng)設(shè)置---- add sonarqube server---name隨意寫 url sonarqube的路徑http://192.168.1.40: 9000

jenkins代碼管理
jenkins代碼管理
點(diǎn)擊保存

系統(tǒng)管理---全局工具配置---新增SonarQube Scanner--- 取消勾選自動安裝----name隨意寫--- SONAR_RUNNER_HOME /usr/local/sonar- scanner
jenkins代碼管理

配置
jenkins代碼管理
配置上次課的web- demo項(xiàng)目----構(gòu)建--- Execute SonarQube Scanner ----Analysis properties 內(nèi)容在cat /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/sonar-project.properties(每個(gè)人安裝目錄不一樣)
jenkins代碼管理

編輯我們的項(xiàng)目,選擇最下放。找到構(gòu)建
jenkins代碼管理
cat /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/sonar-project.properties
jenkins代碼管理

填寫完畢后,我們點(diǎn)擊保存

217 cd /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests
  219  cp -r *  /root/xgp-demo/    
  220  cd /root/xgp-demo/  進(jìn)入xgp項(xiàng)目
  221  git add *            上傳到緩存
  222  git commit -m "sonar"   上傳到版板庫
  223  git push  origin  master  上傳到遠(yuǎn)程庫
提示: 此時(shí)的 SonarQube 是無法點(diǎn)擊的

瀏覽器JDK查看

jenkins代碼管理

點(diǎn)擊 Console Output 可以查看構(gòu)建輸出的內(nèi)容
jenkins代碼管理
#提示:只要沒有 error 就可以
jenkins代碼管理
Gielab查看并修改名字
jenkins代碼管理

再次修改一下并把密鑰修改一下
jenkins代碼管理
jenkins代碼管理

在sonar上查看添加了一個(gè)xgpa

jenkins代碼管理

Jenkins郵件告警

登陸QQ郵箱獲取授權(quán)碼
jenkins代碼管理
1、需要開啟 POPE3/SMTP 服務(wù)
2、在 jenkins 上配置的密碼我們需要點(diǎn)擊生成授權(quán)碼進(jìn)行使用

回到j(luò)dk
系統(tǒng)管理---系統(tǒng)設(shè)置---Jenkins Location---- 系統(tǒng)管理員郵件地址
-----郵件通知---SMTP服務(wù)器smtp . qq. com
---用戶默認(rèn)郵件后綴@qq. com
---勾選使用smtp認(rèn)證
用戶名密碼 (生成的授權(quán)碼)
---勾選使用ssl
--- smtp端口 465
---勾選通過發(fā)送測試郵件測試配置

jenkins代碼管理
jenkins代碼管理
jenkins代碼管理

配置web- demo項(xiàng)目---構(gòu)建后操作- --添加E -mail Notification---Recipient收件 人地址
---- Editable Email Notification---Project From填寫項(xiàng)目名稱----Project Recipient Lis t收件人郵箱地址-
Triggers---add Triggers----always-- Send To只保留Recipient List

失敗郵件

jenkins代碼管理
jenkins代碼管理
jenkins代碼管理
測試:關(guān)閉git(失敗郵件)
gitlab-ctl stop

jenkins代碼管理

jenkins代碼管理

成功郵件

jenkins代碼管理
jenkins代碼管理
jenkins代碼管理
測試:成功郵件
啟動gitlab-ctl start
jenkins代碼管理

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI