Jenkins+SonarQube代码审查

Jenkins+SonarQube代码审查_第1张图片

1. 环境

Centos 7

Jenkins

SonarQube 7.9

Centos7安装SonarQube

centos7安装jenkins

2. SonarQube生成token

SonarQube默认账户是admin/admin

创建token

个人头像–>My Account–>Security

Jenkins+SonarQube代码审查_第2张图片

Jenkins+SonarQube代码审查_第3张图片

Jenkins+SonarQube代码审查_第4张图片

700ba7c1c925ec53ff96159a9c84bf49040c34c0

3. Jenkins安装SonarQube Scanner插件

Jenkins+SonarQube代码审查_第5张图片

Jenkins+SonarQube代码审查_第6张图片

Jenkins+SonarQube代码审查_第7张图片

4. Jenkins添加SonarQube凭证

Jenkins+SonarQube代码审查_第8张图片

Jenkins+SonarQube代码审查_第9张图片

Jenkins+SonarQube代码审查_第10张图片

5. Jenkins进行SonarQube配置

Manage Jenkins->Configure System->SonarQube servers

Jenkins+SonarQube代码审查_第11张图片

应用,保存

Jenkins 安装SonarQube-scanner

Manage Jenkins->Global Tool Configuration

Jenkins+SonarQube代码审查_第12张图片

保存,应用

6. SonaQube 关闭审查结果上传到SCM功能

Jenkins+SonarQube代码审查_第13张图片

7. 在项目添加SonaQube代码审查(非流水线项目)

在现有的非流水线项目中添加构建步骤:

Jenkins+SonarQube代码审查_第14张图片

# must be unique in a given SonarQube instance
sonar.projectKey=web_demo_freestyle
# this is the name and version displayed in the SonarQube UI. Was mandatory
prior to SonarQube 6.1.
sonar.projectName=web_demo_freestyle
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.java.binaries=./target/classes
sonar.exclusions=**/test/**,**/target/**
sonar.java.source=11
sonar.java.target=11
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

Jenkins+SonarQube代码审查_第15张图片

应用,保存

点击Build Now

Jenkins+SonarQube代码审查_第16张图片

Jenkins+SonarQube代码审查_第17张图片

8. 在项目添加SonaQube代码审查(流水线项目)

1. 项目根目录下,创建sonar-project.properties文件

Jenkins+SonarQube代码审查_第18张图片

# must be unique in a given SonarQube instance
sonar.projectKey=web_demo_pipeline
# this is the name and version displayed in the SonarQube UI. Was mandatory
prior to SonarQube 6.1.
sonar.projectName=web_demo_pipeline
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.java.binaries=./target/classes
sonar.exclusions=**/test/**,**/target/**
sonar.java.source=1.8
sonar.java.target=1.8
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

2. 修改Jenkinsfile,加入SonarQube代码审查阶段

pipeline {
   agent any

   stages {
      stage('pull code') {
         steps {
            checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'cce455e2-ba69-459e-93bc-c58ce1e6278f', url: 'ssh://[email protected]:23456/itheima_group/web_demo.git']]])
         }
      }
      stage('build code') {
         steps {
            sh label: '', script: 'mvn clean package'
         }
      }
      stage('check code') {
         steps {
             script  {
                 scannerHome = tool 'sonar-scaner'
             }
             withSonarQubeEnv('sonarqube')  {
                 sh "${scannerHome}/bin/sonar-scanner"
             }
         }
      }
      stage('deploy code') {
         steps {
            deploy adapters: [tomcat9(credentialsId: 'da6aa960-cb2b-415f-a31e-e161ba704f28', path: '', url: 'http://192.168.2.5:8080')], contextPath: null, war: 'target/*.war'
         }
      }
   }
   post {
     always {
       emailext body: '${FILE,path="email.html"}', subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!', to: '[email protected]'
     }
   }
}

提交gitlab,触发JenkinsBuild

Jenkins+SonarQube代码审查_第19张图片

Jenkins+SonarQube代码审查_第20张图片

Jenkins+SonarQube代码审查_第21张图片

Jenkins+SonarQube代码审查_第22张图片

你可能感兴趣的:(jenkins)