Jenkins integró sonarQube para lograr la inspección de la calidad del código

1. Introducción de sonarQube

SonarQube es una herramienta de revisión de código automatizada que se utiliza para detectar errores, vulnerabilidades y olores de código en el código. Se puede integrar con su flujo de trabajo existente para admitir la inspección continua de código en todas las ramas del proyecto y solicitudes de extracción.

El flujo de trabajo es el siguiente:

Como se muestra en la Figura, SonarQube consta de los siguientes 4 componentes:

1.SonarQube Server :

  • WebServer: para desarrolladores y gerentes para explorar instantáneas de alta calidad y configurar instancias de SonarQube
  • Servidor de búsqueda: Servidor de búsqueda basado en Elasticsearch para búsqueda hacia atrás desde la interfaz de usuario (historial)
  • computeEngine: responsable de procesar informes de análisis de código y guardarlos en la base de datos SonarQube

2.SonarQube Base de datos:

  • Configuración de la instancia de SonarQube (seguridad, configuración de complementos, etc.)
  • Instantáneas de calidad de proyectos, vistas, etc.

** 3. Complementos SonarQube: ** Se instalan múltiples complementos SonarQube en el servidor, que pueden incluir complementos de idioma, SCM, integración, autenticación y administración

** 4. SonarScanners: ** Una variedad de componentes de escaneo de sonda, se ejecutan en el servidor de compilación / integración continua para analizar el proyecto.

Para una introducción detallada sobre el sonar, consulte su sitio web oficial .


2. Instalación de SonarQube

SonarQube proporciona múltiples métodos de instalación , este artículo utilizará el método de instalación de la imagen acoplable para demostrar.

1. Tire del contenedor acoplable de sonarQube

$> docker pull sonarqube:8.2-community

2. Crear volumen de datos del acoplador

#包含数据文件,例如嵌入式H2数据库和Elasticsearch索引
$> docker volume create --name sonarqube_data
#包含插件,例如语言分析器
$> docker volume create --name sonarqube_extensions
#包含有关访问,Web流程,CE流程和Elasticsearch的SonarQube日志
$> docker volume create --name sonarqube_logs

3. Configure la base de datos local (el ejemplo usa postgresql)

Si usa el esquema predeterminado "public" de postgresql, este paso no es necesario. Si desea personalizar el esquema, ejecute el siguiente comando

ALTER USER mySonarUser SET search_path to <自定义的schema名称>

4. Inicie sonarQube

$> docker run -d --name sonarqube \
    -p 9000:9000 \
    #以下为给sonarQube的数据库配置,推荐postgresql
    -e SONAR_JDBC_URL=jdbc:postgresql://xxxx:5432/postgres \
    -e SONAR_JDBC_USERNAME=... \
    -e SONAR_JDBC_PASSWORD=... \
    -v sonarqube_data:/opt/sonarqube/data \
    -v sonarqube_extensions:/opt/sonarqube/extensions \
    -v sonarqube_logs:/opt/sonarqube/logs \
    <image_name>

Se puede acceder al navegador local visitando localhost: 9000.


3. Crear un proyecto en sonarQube

Paso 1: nuevo proyecto

Captura de pantalla de Enterprise WeChat_3a0966e9-ebb8-4878-8d1c-985bd65c0009

Paso 2: complete la información del proyecto

image-20200409183243933

Paso 3: crea el token

image-20200409183631966

Paso 4: graba el token

image-20200409183801845

La creación del proyecto se completa, se registra el token y se seguirán los siguientes pasos.


4. Configuración de Jenkins sonarQube plugin

1. Instale el complemento sonarQube

image-20200409181901457

2. Agregar configuración sonarQube

Configure la información de la sonda en jenkins> Gestionar Jenkins> configuración global, como se muestra a continuación:

image-20200409184010520

nombre es un nombre personalizado, serverURL es la dirección de acceso de sonarqube

El último token necesita ser agregado. Haga clic en Agregar, como se muestra a continuación:

image-20200409184332842

Seleccione Texto secreto como tipo y complete el token que obtuvimos en el tercer paso en la columna secreta, y personalice las columnas restantes. Después de agregar, vuelva al paso anterior Token de autenticación del servidor y seleccione el token que acaba de agregar.


5. Introducir sonarQube en el proyecto

El siguiente es un ejemplo de un proyecto de módulo único maven:

1. Introducir el complemento sonarqube:

<!--添加参数,指定projectKey,即在sonar中创建项目时的名称-->
<properties>
	<sonar.projectKey>sonar-demo</sonar.projectKey>
</properties>
<!--添加sonarqube插件-->
<plugin>
  <groupId>org.sonarsource.scanner.maven</groupId>
  <artifactId>sonar-maven-plugin</artifactId>
  <version>3.6.0.1398</version>
</plugin>

2. Escaneo de código manual

Ejecute el siguiente comando

mvn sonar:sonar \
  -Dsonar.projectKey=sonar的项目名称 \
  -Dsonar.host.url=http://sonar的地址 \
  -Dsonar.login=第三步记录的令牌

Una vez completada la ejecución, regrese a la interfaz de sonarQube, puede ver los registros de escaneo y los resultados:

image-20200409184114645

6. Integración de sonarqube en la tubería de jenkins

Defina la etapa de inspección estática de código en el archivo jenkins, como se muestra a continuación:

image-20200409234426724

La figura anterior define dos etapas, 1. Inspección del código estático 2. Análisis de los resultados de la inspección.

⚠️ **: En la etapa de análisis del resultado de la inspección, Jenkins conoce el resultado del escaneo a través de la devolución de llamada de sonarqube. Debe configurar webhook en sonarqube:

image-20200409184522988

El nombre de dominio de webhook es el nombre de dominio de la dirección de jenkins.

Hasta ahora, sonarqube se ha integrado con éxito en la tubería jenkins (tubería), como se muestra a continuación:

image-20200409184044044

7. válvula de calidad personalizada sonarQube

1. Crear una válvula de calidad personalizada

image-20200409184142238

2. Configurar válvula de calidad

image-20200409184212688

3. Prueba

Por ejemplo, cuando el umbral es demasiado alto, el resultado del análisis no cumple con los requisitos del umbral y el resultado del análisis fallará.

En el ejemplo, ajustamos aleatoriamente una condición a un valor que el proyecto actual no puede alcanzar.

image-20200410103807909

En este momento, cuando la tubería se está ejecutando, el control de calidad del código fallará porque no cumple con el estándar.

image-20200410104030284

⚠️: Por lo tanto, cuando personalizamos el umbral de nuestro propio proyecto, depende de la situación de los diferentes proyectos.


8. Resumen

Este artículo presenta la integración de sonarQube en la tubería de múltiples sucursales de Jenkins, para realizar el control de calidad del código en una integración continua. Algunos aspectos involucrados en el artículo (jenkinsfile, uso detallado de sonarQube, etc.) no se describen en detalle, sino que se pasan rápidamente. sonarQube es una herramienta de inspección de código bien conocida en la industria y miembro del ecosistema de herramientas en ci / cd. Explórelo en profundidad y encontrará características más útiles e interesantes. La inspección de la calidad del código es parte de la calidad del código integrado. La integración de la inspección de la calidad del código en la tubería puede detectar rápidamente los problemas y defectos en el código, para solucionar el problema a tiempo y evitar la acumulación de deudas técnicas Cuando se produce el problema), de lo contrario, el costo de reparación será cada vez mayor cuando el problema se acumule hasta cierto punto.


Preste atención al número público del autor y envíe varios artículos técnicos originales / de calidad ⬇️ Un
image-20200410104030284
ingeniero de Java, pero no solo un ingeniero de Java, que cubre devops, pruebas automatizadas, ci / cd, desarrollo ágil, etc. Proporcione soluciones para requisitos técnicos como pruebas automatizadas, ci / cd, cuenta pública, WeChat (cg8377) y correo electrónico ([email protected]). También bienvenido a hacer intercambios técnicos con usted.

Publicado 26 artículos originales · ganado elogios 1 · vistas 9777

Supongo que te gusta

Origin blog.csdn.net/qq_31884013/article/details/105430697
Recomendado
Clasificación