快轉到主要內容

透過 Jenkins Pipeline 執行 SonarQube 源碼掃描

·174 字·1 分鐘·
PolloChang
作者
PolloChang
我是一隻雞

環境準備
#

  • 安裝 SonarQube Server
  • jenknins plugin: SonarQube Scanner

SonarQube
#

Generate SonarQube Token
#

My Account -> Security -> Generate Tokens

jenkins 設定
#

環境
#

  • Manage Jenkins > Manage Credentials
  • manage > system > SonarQube servers
  • manage > system Tools > SonarQube Scanner

專案
#

pipline
#

  • 已下為 grails 專案設定
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

node {

    env.SONAR_USER_HOME="${JENKINS_HOME}"
    env.JAVA_HOME="${tool 'openjdk-17'}"
    env.GRAILS_HOME="/usr/local/lib/grails/grails-5.3.3"
    env.PATH="${env.JAVA_HOME}/bin:${env.GRAILS_HOME}/bin:${env.PATH}"
    


    stage ('Checkout') {
        git branch: 'master',
        credentialsId: 'credentialsId',
        url: "<git url>"
    }

    stage ('Build') {
	    sh "grails test war ${env.WAR_NAME}.war"
    }

    stage('Code Quality Check via SonarQube'){
        script {
            def scannerHome = tool 'sonarqube';
            withSonarQubeEnv("sonarqube-server") {
            sh "${tool("sonarqube")}/bin/sonar-scanner \
                -Dsonar.projectKey=<projectKey> \
                -Dsonar.projectVersion=<projectVersion> \
                -Dsonar.projectBaseDir=${WORKSPACE} \
                -Dsonar.sources=grails-app,src/main \
                -Dsonar.sourceEncoding=UTF-8 \
                -Dsonar.language=grvy,java \
                -Dsonar.java.binaries=build \
                -Dsonar.lang.patterns.grvy='**/*.groovy' \
                -Dsonar.lang.patterns.java='**/*.java' \
                -Dsonar.groovy.binaries=build \
                -Dsonar.exclusions='**/*.xml'"
            }
        }
    }
}