通过Docker搭建SonarQube平台

简介: Docker 主要解决环境配置问题,这里介绍一下如何通过Docker简单的搭建和部署一个SonarQube静态代码扫描平台以及如何接入Jenkins持续集成及时通知开发人员。

简介



SonarQube是一个开源的代码质量管理系统,可以扫描项目中重复代码、编码标准、单元测试、代码覆盖率、代码复杂度、潜在Bug等。支持Java、C/C++、C#、PHP、Groovy、JavaScript、Python等多种语言。代码扫描的好处在于可以通过配置规则扫描代码设计缺陷和提供代码优化建议从而提高代码的质量。本文介绍使用docker技术在Mac环境下搭建SonarQube并配合Jenkins和钉钉机器人完成代码的扫描及报告通知。


Docker安装



这里介绍最简单的手动安装方式,可以通过这个链接下载:


https://download.docker.com/mac/stable/Docker.dmg


如同 MacOS 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将那只鲸鱼图标拖拽到 Application 文件夹即可(其间可能会询问系统密码)。


SonarQube安装



这里参考了名叫 jamesz2011 网友的方案略加修改,依次执行下面的shell命令即可:


wget https://github.com/logan62334/sonarqube/raw/master/ifSonarqube.sh
sudo chmod a+x ifSonarqube.sh
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
brew install dos2unix
sudo dos2unix ifSonarqube.sh
./ifSonarqube.sh

当你看到下面的界面时,证明已经成功启动:


image.png

然后访问:http://127.0.0.1:9000 即可看到成功后的SonarQube页面:


image.png

Jenkins配置



这里就不详细介绍Jenkins的安装和使用了,直接讲如何配置Sonar检查任务:


在插件管理中搜索SonarQube Scanner for Jenkins并安装,在系统设置中配置sonar的服务地址(即http://127.0.0.1:9000),注意要把127.0.0.1换成搭建有sonar服务的服务器IP,还有就是第一次启动sonar平台时生成的token。


接下来在Jenkins所在服务器的maven setting文件中增加下面的配置项:


<profile> 
    <id>sonar</id> 
    <activation> 
        <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
    <!-- Optional URL to server. Default value is http://localhost:9000 --> 
        <sonar.host.url> http://ip:9000 </sonar.host.url> 
    </properties> 
</profile>

最后来看看sonar扫描任务的job怎么配置:


这里通过参数化构建的方式来为不同的代码仓库做检查:

image.png

image.png



然后增加maven构建任务:

image.png

clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true -P dev
sonar:sonar


最后增加构建后任务,同过Python脚本分析项目中pom.xml文件提取groupId和artifactId来拼接报告地址:

image.png

if [ ! -d "venv" ]; then 
    virtualenv venv 
fi 
. venv/bin/activate 
pip install requests 
python /Users/xxx/tools.py pom.xml
#tools.py:
wget https://github.com/logan62334/sonarqube/raw/master/tools.py
相关文章
|
关系型数据库 测试技术 数据库
使用Docker搭建测试用例管理平台TestLink:简易指南
使用Docker搭建TestLink测试管理软件的步骤如下:首先,拉取`bitnami/mariadb`和`bitnami/testlink-archived`镜像。然后,启动MariaDB容器,创建数据库。接着,启动TestLink容器并连接到MariaDB。检查容器状态确保它们已启动。最后,访问`localhost:8099`以使用TestLink,默认用户名为`user`,密码为`bitnami`。这样,你就能在本地便捷地进行测试管理了。
|
搜索推荐 测试技术 数据安全/隐私保护
【Docker项目实战】Docker环境下部署NeonLink书签平台
【2月更文挑战第17天】Docker环境下部署NeonLink书签平台
418 0
|
10月前
|
Java Linux C语言
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
819 90
|
7月前
|
NoSQL Redis 数据库
Docker平台上的Redis镜像运行
这就是如何在Docker平台上运行Redis镜像的全部过程。走进Docker和Redis的世界,探索更多可能!
426 10
|
11月前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
383 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
11月前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
277 4
|
12月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
开发框架 安全 网络安全
【Docker 专栏】Docker 多平台应用构建与部署
【5月更文挑战第8天】Docker作为一种关键的容器化技术,简化了多平台应用的构建与部署。它提供一致的运行环境,确保应用在不同平台无缝运行;通过分层构建机制加速镜像创建,提升开发效率。Docker的可移植性、高效部署及资源利用率是其主要优势。流程包括开发环境准备、构建镜像、测试验证及部署。然而,面临操作系统差异、网络安全和资源限制等挑战,需注意安全、版本管理和性能优化。Docker在多平台场景的应用将持续发挥价值。
352 6
【Docker 专栏】Docker 多平台应用构建与部署
|
监控 应用服务中间件 nginx
使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)
ELK的架构有多种,本篇分享使用的架构如图所示: Beats(Filebeat) -> -> Elasticsearch -> Kibana,目前生产环境一天几千万的日志,内存占用大概 10G
1138 4