1. 程式人生 > >Jenkins中部署Sonar程式碼檢查

Jenkins中部署Sonar程式碼檢查

1 安裝並啟動sonarqube

docker pull sonarqube:7.5-community
docker run \
  --name sonarqube \
  --network ci \
  --ip 172.18.0.16 \
  -p 9000:9000 \
  -d sonarqube:7.5-community

訪問http://ip:9000即可開啟sonarqube頁面,預設使用者名稱密碼是admin/admin,然後生成Tokens

這個Tokens用於和Jenkins進行互動

2 在Jenkins中配置SonarQube伺服器

(1)安裝SonarQube Scanner for Jenkins外掛;
(2)系統管理->系統設定,配置SonarQube伺服器

Name隨便命名,Job中需要用到;Server URL填之前安裝的SonarQube服務的URL;Server authentication token填前面在SonarQube中生成的Token。

3 在gradle中配置Sonar外掛

在編譯指令碼build.gradle中新增以下內容:

plugins {
  id "org.sonarqube" version "2.6"
}

sonarqube {
    properties {
        property "sonar.projectName", "platform"
    }
}

這裡的sonar.projectName為自定定義的工程名,Sonar檢查完之後會顯示在SonarQube介面。
要執行sonar檢查,只要在jenkins的pipeline指令碼中新增以下內容即可:

stage("sonar-platform") {
  steps {
    withSonarQubeEnv('sonar') {
      sh '''
        cd ${project}/platform
        gradle sonarqube
      '''
    }
  }
}

4 使用sonar檢查js

檢查js程式碼需要在SonarQube上安裝SonarJS外掛,不過docker版本的SonarQube已經自帶了SonarJS外掛,直接使用即可。js檢查需要使用sonar-scanner,需要下載映象:

docker pull mercuriete/sonar-scanner

jenkins指令碼中新增以下內容:

stage("sonar-portal") {
  steps {
    withSonarQubeEnv('sonar') {
      sh '''
        docker run --rm \
          -v ${project}/portal:/${project}/portal \
          mercuriete/sonar-scanner \
          sonar-scanner \
          -Dsonar.host.url=http://192.168.1.100:9000 \
          -Dsonar.projectKey=${project}-portal \
          -Dsonar.sources=/${project}/portal/src
      '''
    }
  }
}