Jenkins+Sonar 项目构建前代码审查
一、sonar简介
1、概述
Sonar (SonarQube)是一个开源平台,用于持续检查代码质量,不只是一个质量数据报告工具,更是代码质量管理平台。
支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。
2、实例组件

SonarQube 实例包含三个组件:
1、SonarQube server运行以下进程:
为 SonarQube 用户界面提供服务的 Web Server。
基于 Elasticsearch 的Search Server。
负责处理代码分析报告并将其保存在 SonarQube 数据库中的compute engine(计算引擎)。
2、存储以下内容的数据库:
代码扫描期间生成的代码质量和安全性指标和问题。
SonarQube 实例配置。
3、在您的构建或持续集成服务器上运行的一个或多个Scanner(扫描器)来分析项目。
3、搭建前准备
服务器要求:由于sonar使用嵌入式elasticsearch,主机要符合es生产模式要求和文件描述符配置。需要以root身份运行一下参数:
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 4096
sonarqube需要数据库的支持:
微软 SqlServer
Oracle
PostgreSQL
MySQL(sonarqube7.9以上已不再支持mysql数据库)
服务版本
sonarqube:8.9.1-community (192.168.1.20)
postgresql:latest (192.168.1.20)
二、Docker搭建PostgreSQL数据库
mkdir -p /server/docker/postgresql/data
docker run --name postgresql -p 5432:5432 \
-e POSTGRES_PASSWORD=123456 \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v /etc/localtime:/etc/localtime:or \
-v /server/docker/postgresql/data:/var/lib/postgresql/data \
-itd postgres
创建sonar数据库及用户名密码:
登录数据库:psql
psql -d [databasename] #登录其他数据库
创建用户:create user sonar password 'sonar';
参照template0(模板数据库)创建用户数据库:
create database sonar template template0 owner sonar;
将sonar数据库的所有权限都赋予sonar用户:
grant all privileges on database sonar to sonar;
三、Docker搭建SonarQube
1、搭建sonarqube
启动测试sonar,并复制文件到宿主机,做目录映射:
docker run -d --name sonar -p 9000:9000 sonarqube:8.9.1-community
mkdir -p /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/conf /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/data /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/logs /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/extensions /server/docker/sonarqube
docker rm -f sonar #删除测试sonarqube
启动正式sonar:
docker run -d --name sonar -p 9000:9000 \
-e SONARQUBE_JDBC_URL=jdbc:postgresql://192.168.1.20:5432/sonar \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD=sonar \
-v /etc/localtime:/etc/localtime:or \
-v /server/docker/sonarqube/conf:/opt/sonarqube/conf \
-v /server/docker/sonarqube/data:/opt/sonarqube/data \
-v /server/docker/sonarqube/logs:/opt/sonarqube/log \
-v /server/docker/sonarqube/extensions:/opt/sonarqube/extensions \
-itd sonarqube:8.9.1-community
SONARQUBE_JDBC_URL=jdbc:postgresql://192.168.1.20:5432/sonar #postgresql的ip、端口、数据库名
SONARQUBE_JDBC_USERNAME=sonar #postgresql的用户名
SONARQUBE_JDBC_PASSWORD=sonar #postgresql的密码
-v /etc/localtime:/etc/localtime:or #容器跟宿主机时间同步
访问sonar:192.168.1.20:9000 默认账户名密码:admin/admin

2、sonar页面汉化
administrator——marketplace——plugins搜索Chinese——Chinese pack,install——restart server重启

汉化完成:

四、Jenkins页面配置持续审查项目代码
登录Jenkins管理页面,插件管理——安装插件“sonarqube scanner”

1、配置连接sonarqube服务器
Jenkins系统管理——系统设置——SonarQube servers——add sonarqube

Server authentication token是sonarqube服务的登录凭证,登录到sonarqube页面,创建用户token,然后填到此处即可:


2、安装sonarqube工具
系统管理——全局工具配置——SonarQube Scanner——选择自动安装
3、项目中配置sonarqube
进入项目配置中,构建——增加构建步骤——选择“Execute SonarQube Scanner”

然后配置 Execute SonarQube Scanner分析源码:

Analysis properties 填写配置:
sonar.projectKey=
sonar.projectName= #这个可自定义,报告发送到sonarqube后,sonarqube将创建以此命名的project
sonar.projectVersion=1.0 #项目版本号
sonar.language=java #表示分析java源代码
sonar.java.source=11 #表示jdk版本
sonar.java.binaries=gateway-service #jenkins项目中有多个项目名,就写需要构建jar包的那个项目名;只有一个项目就写“.”。
sonar.sources=gateway-service/src #表示源代码目录
sonar.sourceEncoding=UTF-8
sonar.scm.disabled=true
4、查看分析结果
选择分支构建jenkins 项目后,分析结果将发送到sonarqube:

点击SonarQube将进入sonar 分析结果页面:

jenkins+sonar审查源码完成。
五、jenkins+sonarqube搭建过程遇到的报错
持续更新中......
Jenkins+Sonar 项目构建前代码审查的更多相关文章
- Jenkins配置项目构建后的钉钉通知
首先在任意一个钉钉群里创建自定义的钉钉机器人,然后能够看到钉钉开放的webhook 复制webhook Jenkins中安装钉钉插件,然后在项目的配置当中,构建后操作里添加钉钉报警 url一般默认已经 ...
- Jenkins配置项目构建的钉钉通知
在任意一个钉钉群里创建自定义的钉钉机器人,然后能够看到钉钉开放的webhook,复制webhook. Jenkins中安装钉钉插件,然后在项目的配置当中,构建后操作里添加钉钉报警. 安装钉钉通知插件 ...
- jenkins(二)项目构建
通过上一篇“jenkins(一)集成环境搭建示例”,已经完成了jenkins的安装,基本配置,启动,下面继续小结jenkins使用 一.jenkins系统配置 访问jenkins,点击系统管理-> ...
- 在Redhat上为.Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
在Redhat enterprise 6.5 的服务器上,为在gutub 上的 .net 项目构建一个持续集成环境,用到了Jenkins和mono.因公司的服务器在内网,访问外网时要通过代理,所以在很 ...
- 前后端分离之前端项目构建(grunt+require+angular)
前言 前段时间做了一个项目,前端开发页面,然后把代码给到后端同学,后端同学通过vm再来渲染页面.后来才发现,这种方式简直是太low了,因为前端代码在服务端同学那里,每次前端需要更改的时候都需要去到服务 ...
- Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...
- jenkins:一个jenkins项目远程触发另一个jenkins项目构建配置
很多时候,我们会有这样的应用场景:一个jenkins上的项目构建后,需要远程触发另一台机子上的jenkins中某个项目的构建,可以通过Parameterized Remote Trigger Conf ...
- Redhat上为java Maven项目构建基于Jenkins + Github的持续集成环境
在Redhat enterprise 6.5 的服务器上,为在gutub 上的 java mvaen项目构建一个持续集成环境,用到了Jenkins.因公司的服务器在内网,访问外网时要通过代理,所以为m ...
- Jenkins环境搭建(5)-与Jmeter完成参数化构建和构建前删除操作
此前介绍过几篇关于Jenkins配置相关的文章,今天再来说说参数化构建和构建前删除已有的报告.在实际测试过程中,是需要测试几套环境的,不使用参数化构建的话,构建脚本就比较麻烦了:自然,已生成的报告,不 ...
随机推荐
- 荷小鱼 x mPaaS | 借助 H5 容器改善 App 白屏、浏览器兼容等问题
随着5G.大数据.人工智能技术的应用,各类传统行业纷纷大力推进数字化转型升级. 而受疫情的影响,教育行业也在大幅加速线上化转型进程,各类在线教育应用也在借助各种力量拓张自己的移动端市场领域. 「荷 ...
- CSS的引入方式和复合选择器
CSS的引入方式 样式表 优点 缺点 范围 行内样式表 书写方便 结构样式混写 控制一个标签 内部样式表 部分结构和样式相分离 没有彻底 控制一个页面 外部样式表 完全实现结构和样式分离 需要引入 控 ...
- Go语言之main包
Go语言的代码通过包(package)组织,包类似于其他语言里的库(libraries)或者模块(modules).一个包由位于单个目录下的一个或多个go源文件组成,目录定义包的作用.每个源文件都以一 ...
- [转]CAP和BASE理论
1. CAP理论 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想.2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证 ...
- [leetcode] 44. 通配符匹配(Java)(动态规划)
44. 通配符匹配 动态规划 做动态规划很简单,三步走: 第一步,判断可否用动态规划做,即判断是否满足两个条件:①最优子结构,②重叠子问题.显然该题求s与p是否match,可由其字串层层分解上来. 我 ...
- Go语言网络通信---tcp上传大文件(粘包问题还需优雅解决)
server端: package main import ( "bufio" "encoding/binary" "fmt" "n ...
- TheSuperego 实验六 团队作业3:项目需求分析与原型设计
项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 团队名称 TheSuperego 团队成员分工描述 杨丽霞:组织QQ会议,合理明确组内分工,推进任务,实施关于我们原型设计陈来弟:负 ...
- 使用NVIDIA GRID vPC支持视频会议和算力工具
随着2020年的发展,远程工作解决方案已成为许多人的新常态.企业正在寻找行之有效的解决方案,如虚拟桌面基础设施(VDI),以使他们的团队能够在任何地方安全地工作.然而,最新的算力和视频会议应用程序需要 ...
- 『言善信』Fiddler工具 — 6、Fiddler界面布局详解【命令行和状态栏】
目录 1.命令行 2.状态栏 1.命令行 命令行在Fiddler的左下方的黑色窗口,也叫QuickExec,可以调用 Fiddler的内置命令. 这一系列内置的函数用于筛选和操作会话列表中的sessi ...
- 正则表达式re模块的基础及简单应用
一.re的简介 re模块是python独有的匹配字符串的模块 该模块中的很多功能是基于正则表达式实现 二.正则表达式的基础语法 元字符 匹配内容说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数 ...