从零开始带你实现一套自己的CI/CD(二)Jenkins+Sonar Qube
创始人
2024-03-28 14:20:39
0

目录

  • 一、简介
  • 二、Sonar环境搭建
    • 2.1 下载Docker镜像
    • 2.2 使用docker-compose部署
  • 三、Sonar Qube基本使用
    • 3.1 Maven实现代码检测
    • 3.2 Sonar-scanner实现代码检测
  • 四、Jenkins集成Sonar Qube
    • 4.1 下载插件
    • 4.2 SonarQube生成Token
    • 4.3 Jenkins配置Sonar Token信息
    • 4.4 Jenkins全局工具配置Sonar
    • 4.5 Jenkins任务配置构建命令
    • 4.6 立即构建
  • 五、Jenkins集成Maven Sonar
    • 5.1 配置JDK环境
    • 5.2 Maven配置Sonar信息
    • 5.3 修改Jenkins的构建命令
    • 5.4 立即执行

一、简介

上次我们学习了将本地代码上传到Git仓库,Jenkins再拉去Git仓库代码,通过Maven进行构建打包,并发布到服务器,以Docker容器方式启动。这次我们继续学习DevOps,代码检测工具Sonar Qube

Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言, 可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。
Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来。

二、Sonar环境搭建

2.1 下载Docker镜像

docker pull postgresdocker pull koolwithk/sonarqube-arm # arm64架构,MacOS M1芯片就是arm64架构
docker pull sonarqube:latest # amd64架构,即x86

注意sonar docker 镜像:

https://hub.docker.com/r/koolwithk/sonarqube-arm

https://hub.docker.com/_/sonarqube

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

2.2 使用docker-compose部署

准备docker-compose.yml文件:

version: "3.1"
services:db:image: postgrescontainer_name: dbports:- 5432:5432networks:- sonarnetenvironment:POSTGRES_USER: sonarPOSTGRES_PASSWORD: sonarsonarqube:image: koolwithk/sonarqube-armcontainer_name: sonarqubedepends_on:- dbports:- "9000:9000"networks:- sonarnetenvironment:SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonarSONAR_JDBC_USERNAME: sonarSONAR_JDBC_PASSWORD: sonar
networks:sonarnet:driver: bridge
docker-compose up -d # 启动管理的容器
docker-compose logs -f # 查看日志
docker-compose down #关闭并删除容器
docker-compose ps #查看由docker-compose管理的容器

在这里插入图片描述

注意:首次启动会有报错(忘记截图了)
解决办法:
使用vim /etc/sysctl.conf命令编辑sysctl.conf文件:vm.max_map_count=262144
在这里插入图片描述

浏览器访问IP+9000
默认的用户名和密码都为admin
在这里插入图片描述

登录成功后重新修改密码:
在这里插入图片描述

登录成功后主界面:

在这里插入图片描述

可以选择安装中文插件

在这里插入图片描述
在这里插入图片描述
安装成功后,重启Sonar。(建议阅读英文,熟悉英文)

三、Sonar Qube基本使用

Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式。

3.1 Maven实现代码检测

修改Maven的settings.xml文件配置Sonar Qube信息

sonartrueadmin123456http://192.168.153.131:9000

执行mvn sonar:sonar 命令:进行检测代码:

在这里插入图片描述

查看 SonarQube 界面检测结果:

在这里插入图片描述

记录报错
错误1:Java8版本太低,使用Java11。
在这里插入图片描述

错误2
代码编译未通过,原因是lombok版本太低,导致编译失败,升级lombok版本为1.18.24后编译通过。
在这里插入图片描述

3.2 Sonar-scanner实现代码检测

sonar-scanner-cli 下载地址:https://binaries.sonarsource.com/?prefix=Distribution/sonar-scanner-cli/
在这里插入图片描述

在这里插入图片描述
note:data为Jenkins挂载的宿主机目录,sonar-scanner为我解压后的目录。

解压压缩包后进入conf目录修改sonar-scanner配置文件:

在这里插入图片描述

../../sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=test -Dsonar.projectKey=java -Dsonar.java.binaries=target/

查看SonarQube界面检测结果.

由于博主是本机是Mac M1,OS 是arm64架构,无法执行x86架构的软件。所以无法实验使用Sonar-scanner方式。

在这里插入图片描述

在这里插入图片描述

四、Jenkins集成Sonar Qube

4.1 下载插件

Jenkins集成Sonar Qube实现代码扫描需要先下载整合插件。
在这里插入图片描述

4.2 SonarQube生成Token

Sonar开启权限验证
Administration --》 Configuration --》Security

在这里插入图片描述

Sonar生成令牌:
进入个人账户 --》 Security --》 Generate Tokens
在这里插入图片描述

在这里插入图片描述

4.3 Jenkins配置Sonar Token信息

在Jenkins 的配置中,找到SonarQube servers ,点击添加
在这里插入图片描述

类型选择 Secret text,将刚刚生成的Sonar Token 粘贴到Secret中。

在这里插入图片描述

4.4 Jenkins全局工具配置Sonar

进入Jenkins --》 全局工具配置 --> SonarQube Scanner
在这里插入图片描述

4.5 Jenkins任务配置构建命令

进入Jenkins项目配置,在构建步骤,点击增加构建步骤

在这里插入图片描述

sonar.projectname=${JOB_NAME}
sonar.projectKey=${JOB_NAME}
sonar.source=./
sonar.java.binaries=target/

在这里插入图片描述

4.6 立即构建

点击立即构建,然后查看Sonar Qube的检测效果。

五、Jenkins集成Maven Sonar

由于博主机器配置问题,无法集成Sonar-scanner,所以只能使用maven方式得集成Sonar。

5.1 配置JDK环境

添加JDK11配置:
下载JDK11的压缩包,解压并移动到宿主机挂载的Jenkins的目录

在这里插入图片描述

设置项目使用的JDK为jdk11版本

在这里插入图片描述

5.2 Maven配置Sonar信息

修改Jenkins 的Maven的配置:

sonartrueadmin123456http://192.168.153.131:9000

5.3 修改Jenkins的构建命令

更改Jenkins 任务Maven构建命令:

sonar:sonar
package

在这里插入图片描述

5.4 立即执行

点击立即执行,查看控制台日志

在这里插入图片描述

在这里插入图片描述

在Sonar页面查看结果:

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

在这里插入图片描述

在这里插入图片描述

可以看到Sonar检测我们代码的结果,可以看到我们的代码哪些Bug、

完成。

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...