从零开始带你实现一套自己的CI/CD(二)Jenkins+Sonar Qube

news2024/12/23 20:11:46

目录

  • 一、简介
  • 二、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 postgres

docker 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: postgres
    container_name: db
    ports:
      - 5432:5432
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
  sonarqube:
    image: koolwithk/sonarqube-arm
    container_name: sonarqube
    depends_on:
      - db
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_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信息

<profiles>
    <profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <sonar.login>admin</sonar.login>
            <sonar.password>123456</sonar.password>
            <sonar.host.url>http://192.168.153.131:9000</sonar.host.url>
        </properties>
    </profile>
</profiles>

执行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的配置:

<profiles>
    <profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <sonar.login>admin</sonar.login>
            <sonar.password>123456</sonar.password>
            <sonar.host.url>http://192.168.153.131:9000</sonar.host.url>
        </properties>
    </profile>
</profiles>

5.3 修改Jenkins的构建命令

更改Jenkins 任务Maven构建命令:

sonar:sonar
package

在这里插入图片描述

5.4 立即执行

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

在这里插入图片描述

在这里插入图片描述

在Sonar页面查看结果:

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

在这里插入图片描述

在这里插入图片描述

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

完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

word如何设置页码?一分钟教你设置Word文档的页码!

你知道Word怎么设置页码吗&#xff1f;可能你还找不到页码在何处。相信有很多人也会遇到这些类似的问题。如何在Word文档里面的任意一页设置页码呢&#xff1f;word如何设置页码&#xff1f;现在小编就把设置页码的过程和截图分享出来&#xff0c;本文仅供参考使用。有需要的朋…

算法刷题打卡第40天:打家劫舍

打家劫舍 难度&#xff1a;中等 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。…

全解一款六面体结构化网格划分利器-NUMECA IGG

作者 |卢工FunRun 仿真秀优秀讲师 导读&#xff1a;前不久&#xff0c;VIP群有人提问&#xff1a;“老师&#xff0c;NUMECA如何计算带蜗壳叶轮机呢”&#xff1f;笔者使用NUMECA FINE/Turbo&#xff08;以下简称Turbo&#xff09;软件解决叶轮机械气动性能仿真计算已有三年多&…

nRF Connect的使用

一、工具简介 nRF Connect是NORDIC开发的一款低功耗蓝牙测试APP&#xff0c;仅支持安卓。可以扫描和探索低功耗蓝牙设备并与它们通信。 蓝牙通信的核心是向硬件发送数据和接收硬件传回来的数据。 二、准备项 Android手机 蓝牙硬件 三、使用简介 1、进入界面 &#xff08;1&…

某科技公司防火墙配置与管理

目录 杭州继保南瑞电子科技有限公司… 1 公司简介…2需求分析… 错误!未定义书签。公司网络拓扑图…4IP 地址规划 …4设备选型…5技术介绍…6 6.1 DMZ …6 6.2 VPN …6 6.3 NAT …6 6.4 ACL …7项目实施…7 7.1 DMZ 区域配置及结果测试 …7 7.1.1 防火墙基本配置…8 7.1.2 内网…

粉笔通过上市聆讯:上半年营收14.5亿 腾讯经纬高瓴是股东

雷递网 雷建平 12月7日职业教育平台粉笔科技今日通过聆讯&#xff0c;准备在港交所上市。花旗、中金&#xff08;香港&#xff09;和美银证券为其联席保荐人。粉笔科技此次募资用途为丰富课程内容、扩大学员群体、加强内容及技术开发能力等。上半年营收14.51亿粉笔科技成立于20…

# spring-security(一)

一、权限管理简介 1、什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理&#xff0c;权限管理属于系统安全的范畴&#xff0c;权限管理实现对用户访问系统的控制&#xff0c;按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 ​ 权限管理…

学习笔记-3-SVM-9-Twin SVM

Outline 1. Motivation 2. Geometry 3. Algebraic manipulation 4. Observations ------------------------------ 1. Motivation Twin SVM的基本出发点是做二分类时&#xff0c;为什么我们只用1个分割超平面&#xff0c;为什么不能用两个呢&#xff1f; 这里是想用两个…

CVT变速器中壳体吊机设计

目 录 1 绪论 1 1.1 课题的研究目的和意义 1 1.2 课题研究的内容 1 2 CVT变速器中壳体吊机总体设计 3 2.1 性能参数 3 2.2 确定主要工作机构和金属结构的形式 4 2.2.1 确定主要工作机构形式 4 2.2.2 金属结构选型 11 2.3 载荷的计算 13 2.3.1 自重载荷 13 2.3.2 起升载荷 14 2.…

HTTP常见状态码

网上都有状态码的说明但是有些不全所以我特此在这里整理一下&#xff0c;这个图来自小林大佬的图 1xx 100 表示客户还需要继续发送请求 101 客户要求服务器根据请求转换HTTP协议版本号 2xx 200 成功 201 提示知道新文件的URL 202 接受和处理、但处理未完成 203 返…

Redis缓存优化、本地锁及分布式锁的入门使用思想实现

Redis缓存优化、本地锁及分布式锁的入门使用思想实现 1、依赖启动器引入 <!-- redis --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency><!…

行为管理(锐捷业务软件篇)

大家好&#xff0c;我是小杜&#xff0c;古人云“好好学习&#xff0c;天天向上”。我要学习“古人”好榜样──三更鸡鸣、五......做为新时代的五好青年只能说“小杜”做不到啊&#xff01;不过提早到公司学习还是可以的。 之前了解了软件产品如何部署实施后。我们今天来看看对…

大一html5期末大作业 :基于html实现非遗文化网页设计题材【传统文化木雕】7个页面

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

如何压缩png图片大小?

png这种图片格式大家应该都熟悉吧&#xff1f;&#xff0c;跟jpg格式有着同样高的使用率。只不过png图片偏于专业化&#xff0c;而jpg更具平常性。举个不恰当的例子Jpg格式就好比相当于口语&#xff0c;而png格式相当于比较正式的书面用语的意思&#xff0c;所以很多小伙伴经常…

C++11标准模板(STL)- 算法(std::make_heap)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 数据结构的堆物理结构是数…

走向大模型、大算力、大数据:特斯拉与毫末的自动驾驶AI路径寻踪

2022行至年终&#xff0c;各种年度总结也纷至沓来。要说最近的大事件&#xff0c;一定少不了&#xff1a;自动驾驶又双叒寒冬了。大量“报忧不报喜”的新闻&#xff0c;说明2022年自动驾驶行业确实出现了一定程度的波动&#xff1a;激光雷达鼻祖德国ibeo和独角兽Argo.ai相继破产…

less基础

less基础 1、维护CSS的弊端 CSS是一门非程序语言&#xff0c;没有变量、函数、SCOPE(作用域) 等概念 CSS需要书写大量看似没有逻辑的代码&#xff0c;CSS冗余度是比较高的不方便维护及扩展&#xff0c;不利于复用CSS没有很好的计算能力非前端开发工程师来讲&#xff0c;往往会因…

[附源码]Python计算机毕业设计Django作业查重系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

AirPods Pro 2用户反馈出现耗电严重情况,Find My功能是其最大亮点

多位 AirPods Pro 2 用户反馈&#xff0c;在升级安装最新版本之后出现了耗电严重的情况。AirPods Pro 2 充电盒的电池即使在不使用的情况下也会出现耗电情况。受影响的用户反馈在不使用状态下&#xff0c;一晚上可以消耗 10% 的电量。 这些受影响的 AirPods Pro 2 用户反馈&…

业界认可+1!网易云信入选首批智慧教育产品和服务供应商名录

近日&#xff0c;2022&#xff08;第二十一届&#xff09;中国互联网大会在深圳成功召开。大会期间&#xff0c;由中国互联网协会智慧教育工作委员会、中国信息通信研究院合办的智慧教育论坛如期举行&#xff0c;论坛以“数智启新聚势&#xff0c;教育点亮未来”为主题&#xf…