技術實操--jenkins集成sonarQube

1. sonarQube

大多數jenkins的流水線都有一個“分析”的階段,用於處理收集代碼的指標、確定複雜度,識別不良編碼和可能的漏洞以及計算潛在的資源成本(技術債務)。這些分析可以識別潛在的問題,修復這些問題。可以增強代碼的可讀性,可靠性和可維護性。

而在jenkins的分析階段,用的往往是目前最流行的’分析’應用之一 sonarQube。

sonarQube(以前被稱爲sonar)是一個用於管理一些關鍵軟件領域的代碼質量,包括

  • 架構設計
  • 註釋
  • 編碼規則
  • 潛在錯誤
  • 重複代碼
  • 單元測試
  • 複雜度

的一個開源項目。

具體的使用指南,請查看sonarQube使用指南

2. jenkins安裝SonarQube Scanner插件

登陸jenkins頁面–>系統管理–>插件管理

安裝插件SonarQube Scanner

這個插件的主要作用是提供一個與sonarQube服務器連接的橋樑。安裝完此插件之後,需要配置sonarQube的地址。

安裝完成,重啓之後。

登陸jenkins頁面–>系統管理–>系統配置

  • 找到SonarQube servers,配置你的sonarQube服務器地址。

  • 添加token:(怎麼添加看下一步)

    選擇 Secret text。將生成的token填寫至Secret中。ID可以自己隨便填寫或者不寫

  • (這個是sonarQube管理員頁面)使用sonarQube管理員生成token

至此,jenkins算是與sonarQube建立了連接。

3. sonarQube掃描器

sonarQube掃描代碼,需要一個插件工具既是sonarQube掃描插件工具。這個工具的安裝方式有很多種,

  • 通過自動化構建工具安裝

    不管是maven項目,還是gradle項目都提供了安裝sonarQube掃描工具的插件。

    這種方式就是將插件安裝在具體的項目中

    比如:Gradle項目,需要在你項目中的build.gradle文件中,引入

    plugins {
      id "org.sonarqube" version "2.7"
    }
    
  • 通過jenkins安裝

    在jenkins中安裝掃描器工具。這樣一來,就可以掃描所有的項目。不需要爲項目單獨安裝。

    安裝方式:

    登陸jenkins頁面–>系統管理–>全局工具配置

找到SonarQube Scanner

如果可以上網,網速還可以,可以進行自動安裝。該掃描工具插件下載源是maven中央倉庫

如果網速一般或者要求離線安裝。需要自己下載相應版本的工具,填寫安裝路徑。

下載sonarQube掃描器—https://repo1.maven.org/maven2/org/sonarsource/scanner/cli/sonar-scanner-cli/4.3.0.2102/sonar-scanner-cli-4.3.0.2102.zip

sonarQube掃描器使用方法

然後解壓放到jenkins的插件目錄下(這個目錄隨意,保持路徑一致,jenkins能找到就行)

/var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/myScanner

修改配置文件:添加對應路徑

hudson.plugins.sonar.SonarRunnerInstallation.xml

<?xml version='1.1' encoding='UTF-8'?>
<hudson.plugins.sonar.SonarRunnerInstallation_-DescriptorImpl plugin="[email protected]">
  <installations>
    <hudson.plugins.sonar.SonarRunnerInstallation>
      <name>myScanner</name>   <home>/var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/myScanner</home>
    </hudson.plugins.sonar.SonarRunnerInstallation>
</hudson.plugins.sonar.SonarRunnerInstallation_-DescriptorImpl>

jenkins這些配置都是熱讀取,不用重啓。

注意解壓後插件掃描工具,執行文件的文件權限問題

[root@node1 bin]# ll
總用量 16
-rwxr-xr-x 1 root root 1762 2月  20 08:14 sonar-scanner
-rwxr-xr-x 1 root root 2420 2月  20 08:14 sonar-scanner.bat
-rwxr-xr-x 1 root root  595 2月  20 08:14 sonar-scanner-debug
-rwxr-xr-x 1 root root  544 2月  20 08:14 sonar-scanner-debug.bat

頁面配置對應地址就可以了

4. 代碼質量掃描

這裏構建一個普通的流水線腳本

pipeline {
   agent any
   stages {
    stage('獲取源碼') {
      steps {
        script {
          checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://git.com.cn/test.git']]])
        }
      }
    }
   stage('代碼質量檢測') {
      steps {
         script {
           def scannerHome = tool 'myScanner';//這個名字一定是對應全局工具配置中sonar掃描器的名字
           withSonarQubeEnv(credentialsId: '8e08dedd-70ec-485a-a33e-e06ca100c010') {
             sh "${scannerHome}/bin/sonar-scanner 
               -Dsonar.projectKey=XXXServer 
               -Dsonar.projectName=XXXServer 
               -Dsonar.projectVersion=2.0.0 
               -Dsonar.language=java  
               -Dsonar.sourceEncoding=utf8 
               -Dsonar.sources=. 
               -Dsonar.java.binaries=."//這裏將sonarQube的屬性定義在這裏,可以定義在項目文件中,在這裏引用配置文件
            }
          }
      }
    }
   }
}

5. 項目掃描成功展示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章