0
点赞
收藏
分享

微信扫一扫

postMessage跨标签页共享数据

您好 04-06 15:30 阅读 1

Jenkins+SonarQube代码审查

一、SonarQube简介

  • SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。
  • 目前支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检测。
  • 官网:https://www.sonarqube.org/

二、Docker部署SonarQube

  • SonarQube docker镜像支持在amd64架构和基于arm64的Apple Silicon上运行。
  • 我们建议使用Docker Engine 20.10及以上版本。
  • docker安装教程:https://qingsi.blog.csdn.net/article/details/131270071

1.下载镜像

docker pull postgres:latest
docker pull sonarqube

2.创建挂载目录

#用于postgres的挂载目录
mkdir -p /data/postgres/postgresql
mkdir -p /data/postgres/data

mkdir -p /data/sonarqube/logs
mkdir -p /data/sonarqube/conf
mkdir -p /data/sonarqube/data
mkdir -p /data/sonarqube/extensions

# 授权(不授权会导致启动失败)
chmod -R 777 /data/sonarqube

3.运行容器

  • 创建网络,通过容器名称就可以互相访问
docker network create sonarqube
  • 先运行postgres
docker run --name postgres -d -p 5432:5432 --net sonarqube \
-v /data/postgres/postgresql:/var/lib/postgresql \
-v /data/postgres/data:/var/lib/postgresql/data \
-v /etc/localtime:/etc/localtime:ro \
-e POSTGRES_USER=sonar \
-e POSTGRES_PASSWORD=sonar \
-e POSTGRES_DB=sonar \
-e TZ=Asia/Shanghai \
--restart always \
--privileged=true \
--network-alias postgres \
postgres:latest
  • 运行sonarqube(这里启动会比较久,可以使用docker logs -f sonarqube查看)
docker run -d --name sonarqube -p 9090:9000 \
-e ALLOW_EMPTY_PASSWORD=yes \
-e SONARQUBE_DATABASE_USER=sonar \
-e SONARQUBE_DATABASE_NAME=sonar \
-e SONARQUBE_DATABASE_PASSWORD=sonar \
-e SONARQUBE_JDBC_URL="jdbc:postgresql://postgres:5432/sonar" \
--net sonarqube \
--privileged=true \
--restart always \
-v /data/sonarqube/logs:/opt/sonarqube/logs \
-v /data/sonarqube/conf:/opt/sonarqube/conf \
-v /data/sonarqube/data:/opt/sonarqube/data \
-v /data/sonarqube/extensions:/opt/sonarqube/extensions \
sonarqube

4.访问

三、Jenkins+SonarQube整合

在这里插入图片描述

1.安装Sonar Scanner插件

在这里插入图片描述

2.安装Sonar Scanner软件

在这里插入图片描述
在这里插入图片描述

  • 配置的名称后续配置Pipeline会用到:sonar-scanner
  • 配置完不会马上下载安装,后续第一次扫描构建的时候才会下载安装。

3.获取SonarQube的token

在这里插入图片描述

4.在jenkins创建凭证

  • 将上一步在SonarQube创建的token,在jenkins凭证管理创建
    在这里插入图片描述

5.配置SonarQube服务器

在这里插入图片描述
在这里插入图片描述

  • 需要记住这个Name:SonarQube-Server

6.非流水线项目整合

  • 非流水项目步骤都是一样的。
  • 以自由风格项目为例
    在这里插入图片描述
    在这里插入图片描述
  • 参数解释:
    • JDK:项目的JDK版本
    • Path to project properties:项目的SonarQube的配置文件目录地址。和 Analysis properties 二选一
      • 第一种配置方式:在git的项目根目录下面创建一个配置文件(sonar-project.properties)
      • 第二种配置方式:将配置放到 Analysis properties
    • Analysis properties:放置SonarQube的配置内容
# must be unique in a given SonarQube instance
sonar.projectKey=web_demo_pipline
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=web_demo_pipline
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# sonar.sources:扫描的代码路径,下面代表所有代码
sonar.sources=.
# 排除某些文件夹不扫描
sonar.exclusions=**/test/**,**/target/**

# JDK的版本
sonar.java.source=1.8
sonar.java.target=1.8

# 源码编码格式
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
  • 完成以上配置,构建完会自动推送到代码审查

7.流水线项目整合

7.1 在git根目录创建SonarQube配置文件

  • 文件名称:sonar-project.properties
# must be unique in a given SonarQube instance
sonar.projectKey=web_demo_pipline
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=web_demo_pipline
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# sonar.sources:扫描的代码路径,下面代表所有代码
sonar.sources=.
# 排除某些文件夹不扫描
sonar.exclusions=**/test/**,**/target/**

# JDK的版本
sonar.java.source=1.8
sonar.java.target=1.8

# 源码编码格式
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

7.2 在Pipeline脚本加入代码扫描

pipeline {
   agent any

   stages {
      stage('pull code') {
         steps {
            checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'b632ed00-fc81-43c8-a746-5aa0673b2658', url: 'git@192.168.66.100:itheima_group/web_demo.git']]])
         }
      }
      stage('code checking') {
         steps {

            script {
                 //引入SonarQubeScanner工具
                scannerHome = tool 'sonar-scanner'
            }
            //引入SonarQube的服务器环境
            withSonarQubeEnv('SonarQube-Server') {
                sh "${scannerHome}/bin/sonar-scanner"
            }
         }
      }
      stage('build project') {
         steps {
            sh 'mvn clean package'
         }
      }
      stage('publish project') {
         steps {
            deploy adapters: [tomcat8(credentialsId: 'fc23e5b7-9930-4dfb-af66-a2a576be52fb', path: '', url: 'http://192.168.66.102:8080')], contextPath: null, war: 'target/*.war'
         }
      }
   }
   post {
         always {
            emailext(
               subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
               body: '${FILE,path="email.html"}',
               to: '1014671449@qq.com'
            )
         }
   }
}
  • 在Jenkins构建项目即可。
举报

相关推荐

0 条评论