【云原生】DevOps(四):集成Sonar Qube

简介: 【云原生】DevOps(四):集成Sonar Qube

一、Sonar Qube介绍
Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。

Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来

Sonar Qube的UI界面
在这里插入图片描述
二、Sonar Qube环境搭建

  1. Sonar Qube安装

Sonar Qube在7.9版本中已经放弃了对MySQL的支持,并且建议在商业环境中采用PostgreSQL,那么安装Sonar Qube时需要依赖PostgreSQL。

并且这里会安装Sonar Qube的长期支持版本8.9

拉取镜像

docker pull postgres
docker pull sonarqube:8.9.3-community
编写docker-compoe.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: sonarqube:8.9.3-community
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
需要设置sysctl.conf文件信息

设置vm.max_map_count
在这里插入图片描述
| [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-psH0GSDZ-1657006614692)(Pictures/image-20211207145342350.png)] | 并执行命令刷新

sysctl -p
重新启动需要一定时间启动,可以可以查看容器日志,看到如下内容代表启动成功

容器日志

访问Sonar Qube首页

登录
在这里插入图片描述
还需要重新设置一次密码

重新设置密码
在这里插入图片描述
Sonar Qube首页

Sonar Qube首页
在这里插入图片描述

  1. 安装中文插件

安装中文插件
在这里插入图片描述
安装成功后需要重启,安装失败重新点击install重装即可。

安装成功后,会查看到重启按钮,点击即可

重启按钮
在这里插入图片描述
重启后查看效果

首页效果
在这里插入图片描述
三、Sonar Qube基本使用
Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果

  1. Maven实现代码检测

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

<id>sonar</id>
<activation>
    <activeByDefault>true</activeByDefault>
</activation>
<properties>
    <sonar.login>admin</sonar.login>
    <sonar.password>123456789</sonar.password>
    <sonar.host.url>http://192.168.11.11:9000</sonar.host.url>
</properties>


在代码位置执行命令:mvn sonar:sonar

执行代码检测
在这里插入图片描述
查看Sonar Qube界面检测结果

Sonar Qube检测结果
在这里插入图片描述

  1. Sonar-scanner实现代码检测

下载Sonar-scanner:下载网址

下载4.6.x版本即可,要求Linux版本

解压并配置sonar服务端信息

由于是zip压缩包,需要安装unzip解压插件

yum -y install unzip
解压压缩包

unzip sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
配置sonarQube服务端地址,修改conf下的sonar-scanner.properties

配置服务端信息
在这里插入图片描述
执行命令检测代码

在项目所在目录执行以下命令

~/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=demo -Dsonar.projectKey=java -Dsonar.java.binaries=target/
Ps:主要查看我的sonar-scanner执行命令的位置

查看日志信息
在这里插入图片描述
查看SonarQube界面检测结果

检测结果
在这里插入图片描述
四、Jenkins集成Sonar Qube
Jenkins继承Sonar Qube实现代码扫描需要先下载整合插件

  1. Jenkins安装插件

下载Sonar Qube插件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. Jenkins配置Sonar Qube

开启Sonar Qube权限验证

开启Sonar Qube权限校验
在这里插入图片描述
获取Sonar Qube的令牌

获取令牌
在这里插入图片描述
配置Jenkins的Sonar Qube信息

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

  1. 配置Sonar-scanner

将Sonar-scaner添加到Jenkins数据卷中并配置全局配置

配置Sonar-scanner
在这里插入图片描述
配置任务的Sonar-scanner

配置任务的Sonar-scanner
在这里插入图片描述

  1. 构建任务

构建任务
在这里插入图片描述
在这里插入图片描述

目录
相关文章
|
10天前
|
监控 Devops 测试技术
DevOps实践: 持续集成和持续部署(CI/CD)的入门指南
【9月更文挑战第10天】在快速迭代的软件开发世界中,DevOps已经成为加速产品交付、提升软件质量和团队协作的关键策略。本文将深入浅出地介绍DevOps的核心组成部分——持续集成(Continuous Integration, CI)与持续部署(Continuous Deployment, CD)的基本概念、实施步骤以及它们如何革新传统的软件开发流程。你将学习到如何通过自动化工具简化开发流程,并理解为什么CI/CD是现代软件开发不可或缺的一环。
|
8天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
18 3
|
18天前
|
运维 Cloud Native Devops
云原生时代的DevOps实践:自动化、持续集成与持续部署
【9月更文挑战第3天】未来,随着人工智能、大数据等技术的不断融入,DevOps实践将更加智能化和自动化。我们将看到更多创新的技术和工具涌现出来,为软件开发和运维带来更多便利和效益。同时,跨团队协作和集成也将得到进一步加强,推动软件开发向更加高效、可靠和灵活的方向发展。
|
16天前
|
Devops jenkins Shell
DevOps实践:持续集成与持续部署(CI/CD)的探索之旅
【9月更文挑战第3天】在软件开发的世界里,DevOps已经成为了提升效率、加速产品迭代的关键。本文将深入浅出地探讨DevOps文化中的核心实践——持续集成(Continuous Integration,CI)和持续部署(Continuous Deployment,CD),并展示如何通过实际操作来优化开发流程。我们将一起踏上这段旅程,解锁自动化的魅力,让代码更流畅地转化为价值。
|
1月前
|
弹性计算 测试技术 持续交付
阿里云云效产品使用合集之如何进行自动化测试
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
23天前
|
敏捷开发 弹性计算 持续交付
阿里云云效产品使用合集之同一个主机部署是否支持下载多个制品
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
23天前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
23天前
|
敏捷开发 监控 Java
阿里云云效产品使用合集之Codeup WebIDE环境下,如何使用通义灵码
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
23天前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何进行大文件的迁移
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
23天前
|
敏捷开发 安全 测试技术
阿里云云效产品使用合集之如何在甘特图视图中看到负责人信息
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。