在jenkins中集成sonar進行代碼審查,實現持續集成CI/CD

這是我參與8月更文挑戰的第7天,活動詳情查看:8月更文挑戰java

部份參考自 黑馬程序員Java教程自動化部署Jenkins從環境配置到項目開發node

Sonar 集成

SonaQube簡介

SonarQube是一個用於管理代碼質量的開放平臺,能夠快速的定位代碼中潛在的或者明顯的錯誤。目前 支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十幾種編程語言的代碼質量管理與檢 測。mysql

查看源圖像

環境

軟件 版本
JDK 1.8
MySQL 5.7
SonarQube 7.7

安裝MySQL

使用yum方式安裝linux

  • centos7默認安裝了MariaDB(MySQL的一個分支),因此因此執行yum install mysql如下命令只是更新Mariadb數據庫
  • 咱們先檢查一下Mariadb
 rpm -qa|grep mariadb
複製代碼
  • 而後刪除
 rpm -e --nodeps 名字
複製代碼

源的安裝

官網地址:dev.mysql.com/downloads/r…git

image-20210809104531133

  • 先看一下本身系統的版本
 cat /etc/redhat-release
複製代碼

image-20210809104409853

  • 選擇對應的版本進行下載
 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
複製代碼

image-20210809104514329

  • 安裝
 sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
複製代碼
  • 選擇版本程序員

    由於咱們要安裝的是MySQL5.7版本,而默認安裝會選擇當前最新的穩定版本web

    因此先看一下當前yum庫的全部MySQL版本sql

 yum repolist all | grep mysql
複製代碼

image-20210809105459455

  • 可見8.0版本的已啓用,其餘的都禁用了數據庫

    咱們用命令改一下編程

 sudo yum-config-manager --disable mysql80-community
 sudo yum-config-manager --enable mysql57-community
複製代碼
  • 再查看一下,可見已成功修改默認安裝版本

    image-20210809105738943

  • 查看當前啓用的MySQL倉庫

 yum repolist enabled | grep mysql
複製代碼

image-20210809110219031

本體安裝和使用

  • 安裝
 sudo yum install mysql-community-server
複製代碼
  • 啓動
 sudo systemctl start mysqld.service
複製代碼
  • 查看狀態
 sudo systemctl status mysqld.service
複製代碼
  • 查看初始密碼

    MySQL第一次啓動後會建立超級管理員帳號root@localhost,初始密碼存儲在日誌文件中:

 sudo grep 'temporary password' /var/log/mysqld.log
複製代碼

image-20210809120256967

  • 登陸
 mysql -uroot -p
複製代碼
  • 修改初始密碼
 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
複製代碼

若是出現ERROR 1819 (HY000): Your password does not satisfy the current policy requirements的報告提示,是由於密碼太簡單了

MySQL默認的密碼策略是要包含數字、大小寫字母及特殊字符,長度大於8

image-20210809122451187

  • 容許root遠程訪問
 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;
複製代碼

而後刷新FLUSH PRIVILEGES;

  • 設置編碼格式爲UTF-8

    編輯/etc/my.cnf,[mysqld]節點增長如下代碼:

     character_set_server=utf8
     init-connect='SET NAMES utf8'
    複製代碼

image-20210809135358198

  • 設置開機啓動
 systemctl enable mysqld
 systemctl daemon-reload
複製代碼
  • 建立sonar數據庫
 create database sonar;
複製代碼

看一下成功沒

 show databases;
複製代碼

image-20210809135906413

安裝sonar

 mkdir opt/sonar #建立目錄
 wget 對應版本的下載連接 #下載壓縮包
 unzip 名字.zip #解壓
 useradd 名字 #建立sonar用戶,必須sonar用於啓動,不然報錯
 chown -R 用戶名. /opt/sonar #更改sonar目錄及文件權限
複製代碼
  • 修改sonar配置文件opt/sonarqube-版本號/conf/sonar.properties

    修改數據庫鏈接用戶名和密碼,以及取消註釋圖中底行的鏈接地址

    Ps:sonar默認監聽9000端口,若是9000端口被佔用,須要更改。

image-20210810101256367

  • 啓動sonar
 
 su 用戶名 ./bin/linux-x86-64/sonar.sh start #啓動
 su 用戶名 ./bin/linux-x86-64/sonar.sh status #查看狀態
 su 用戶名 ./bin/linux-x86-64/sonar.sh stop #中止
 tail -f logs/sonar.log #查看日誌
複製代碼

image-20210810103508444

  • 登陸

    默認帳戶:admin/admin

image-20210810113047465

  • 建立密鑰

    輸入密鑰命,生成一串密鑰,做爲其餘平臺鏈接sonar的口令,要記下來

image-20210810113720492

在jenkins中集成

  • 運行邏輯:

image-20210810114118796

安裝插件

  • 安裝SonarQube Scanner插件

image-20210810114514867

安裝SonarQube Scanner

  • 在jenkins中自動安裝SonarQube Scanner

    【Manage Jenkins】->【Global Tool Configuration】->【SonarQube Scanner】

    能夠選擇最新版本

image-20210810115318969

添加憑證

  • 添加SonarQube憑證

    【Manage Jenkins】->【Manage Credentials】->【全局】->【添加憑證】

    選擇【Secret test】類型,填入sonar的token密鑰,寫好憑據描述,點擊肯定

image-20210810120438452

配置全局服務環境

  • 進行全局配置

    【Manage Jenkins】->【Configure System】->【SonarQube servers】

    填寫名字、sonar的部署地址,選擇上一步配好的證書

    點擊應用,保存

image-20210811145257699

在項目中添加SonarQube代碼審查

非流水線類型

首先演示的是直接在jenkins裏輸入

  • 在項目配置中,添加【Execute SonarQube Scanner】構建步驟

image-20210811145844555

選擇jdk1.8,而後在【Analysis properties】輸入框中輸入用於sonar分析的相關參數,模板已給出

image-20210811150045607

模板:

 # must be unique in a given SonarQube instance
 # sonar中項目的惟一鍵值
 sonar.projectKey=web_demo 
 # this is the name and version displayed in the SonarQube UI. 
 sonar.projectName=web_demo
 sonar.projectVersion=1.0
 # Path is relative to the sonar-project.properties file. Replace "" by "/" on
 Windows.
 # This property is optional if sonar.modules is set.
 sonar.sources=. #掃描文件的路徑
 sonar.exclusions=**/test/**,**/target/** #不掃描的文件
 sonar.java.source=1.8
 # Encoding of the source code. Default is default system encoding
 sonar.sourceEncoding=UTF-8
複製代碼
  • 點擊應用保存,而後構建

    image-20210811152821984

  • 構建完成後可在sonar中看到檢測結構,成功

image-20210811152841491

流水線類型
  • 在項目文件下建立sonar-project.properties文件,寫入同上一步同樣的配置參數信息,修改一下項目名

image-20210811163828903

  • 修改Jenkinsfile腳本,添加代碼審查步驟

    image-20210811162617986

 stage('check'){
     steps{
         script{
             scannerHome = tool 'SonarQube-Scanner' //引入工具,名字是以前在jenkins裏安裝scanner的名字
         }
         withSonarQubeEnv('SonarQube'){ //名字是以前在全局服務環境裏配置的名字
             sh "${scannerHome}/bin/sonar-scanner" //引入sonar服務環境
         }
     }
 }
複製代碼
  • 推送到gitlab,觸發構建,成功

    image-20210811164343498

  • sonar也出了檢測結果

    image-20210811164435640

  • 成功
相關文章
相關標籤/搜索