Jenkins代码审查
目录
1、安装SonarQube
2、实现代码审查
1、安装SonarQube
SonarQube简介:是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检测,底层使用elasticsearch作为代码检索工具。
官网:https://www.sonarqube.org/
环境需求:JDK1.8、MySQL5.7、SonarQube6.7.4
按要求安装MySQL,安装SonarQube,在MySQL创建sonar数据库
安装MySQL5.7
[root@jenkins ~]# yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
[root@jenkins ~]# useradd -s /sbin/nologin mysql
[root@jenkins ~]# tar zxvf mysql-5.7.17.tar.gz -C /opt/
[root@jenkins ~]# tar zxvf boost_1_59_0.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins ~]# mv boost_1_59_0 boost
[root@jenkins ~]# cd /opt/mysql-5.7.17/
[root@jenkins mysql-5.7.17~]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1
[root@jenkins mysql-5.7.17~]# make -j4 && make install
[root@jenkins mysql-5.7.17~]# chown -R mysql.mysql /usr/local/mysql/
[root@jenkins mysql-5.7.17~]# vim /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
[root@jenkins mysql-5.7.17~]# chown mysql:mysql /etc/my.cnf
[root@jenkins mysql-5.7.17~]# vim /etc/profile
...
export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH #末行添加
[root@jenkins mysql-5.7.17~]# source /etc/profile #刷新配置生效
[root@jenkins mysql-5.7.17~]# cd /usr/local/mysql
[root@jenkins mysql~]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
[root@jenkins mysql~]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@jenkins mysql~]# systemctl daemon-reload
[root@jenkins mysql~]# systemctl start mysqld
[root@jenkins mysql~]# systemctl enable mysqld
[root@jenkins mysql~]# mysqladmin -u root -p password "abc123" #在mysql外部定义密码
mysql> set password = password('abc123'); #在mysql内部定义密码
[root@jenkins mysql~]# mysql -u root -p
[root@jenkins mysql~]# grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;
数据库安装完成后,在MySQL创建sonar数据库
安装SonarQube
[root@jenkins ~]# unzip sonarqube-6.7.4.zip #解压
[root@jenkins ~]# mkdir /opt/sonar #创建目录
[root@jenkins ~]# mv sonarqube-6.7.4/* /opt/sonar #移动文件
[root@jenkins ~]# useradd sonar #创建sonar用户,必须sonar用于启动,否则报错
[root@jenkins ~]# chown -R sonar. /opt/sonar #更改sonar目录及文件权限
[root@jenkins ~]# vim /opt/sonar/conf/sonar.properties
...
sonar.jdbc.username=root
sonar.jdbc.password=abc123
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar? useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs= maxPerformance&useSSL=false #取消注释即可
注意:sonar默认监听9000端口,如果9000端口被占用,需要更改。 启动sonar(注意:切换sonar用户)
切换用户,启动服务
[root@jenkins ~]# su sonar
[sonar@jenkins root]$ cd /opt/sonar/
[sonar@jenkins root]$ ./bin/linux-x86-64/sonar.sh start #启动
[sonar@jenkins root]$ ./bin/linux-x86-64/sonar.sh status #查看状态
配置没错的情况下会进入界面
创建用户和密码
创建token
2、实现代码审查
实现代码审查的流程图
安装SonarQube Scanner插件
回到主界面
进去找到SonarQube Scanner
添加SonarQube凭证
进行SonarQube配置
在项目添加SonaQube代码审查(非流水线项目)
打开之前创建的web_demo_freestyle
# must be unique in a given SonarQube instance
sonar.projectKey=web_demo_freestyle
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=web_demo_freestyle
sonar.projectVersion=1.0# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**sonar.java.source=1.8
sonar.java.target=1.8# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
保存设置,进行构建
在sonarqube服务器上刷新,查看结果
测试错误代码
在main目录下新建Java和resource目录
配置pom.xml文件添加对servlet的依赖
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version>
</dependency
新建编写Servlet文件
package com.kgc;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//模拟错误代码int i = 100/0;//模拟代码冗余int j = 100;j = 200;resp.getWriter().write("hello Servlet");}
}
代码提交
进行构建测试结果
如果构建maven项目报错,查看JDK版本符不符合
在项目添加SonaQube代码审查(流水线项目)
在项目根目录下,创建sonar-project.properties文件
# must be unique in a given SonarQube instance
sonar.projectKey=web_demo_pipeline
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=web_demo_pipeline
sonar.projectVersion=1.0# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**sonar.java.source=1.8
sonar.java.target=1.8# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
修改Jenkinsfile,加入SonarQube代码审查阶段
stage('code checking') {steps {script {//引入了sonarqube-scanner工具scannerHome = tool 'sonar-scanner'}//引入了sonarqube服务器系统环境withSonarQubeEnv('sonarqube') {sh "${scannerHome}/bin/sonar-scanner"}}}
把更改后的sonar-project.properties和Jenkinsfile进行提交
开始构建web_demo_pipeline
Jenkins代码审查相关推荐
- 个人知识体系(持续更新)
Android App: 一.View 1.1 ActionBar 1.ActionBar的home键 2.利用代码移除系统自带的标题栏 3.Android中层级导航的实现示例 4.Android中工 ...
- canna-cloud【一】前言:canna-cloud的构想与实践
canna-cloud 基于Spring+SpringMVC+Mybatis分布式系统,引入Spring boot + Spring Cloud微服务架构, 提供一整套企业系统的公共微服务模块与系统, ...
- jenkins pipeline、用户权限管理、插件下载地址更改、凭证管理、自由风格项目构建、maven项目构建、常用的构建触发器、邮件发送、SonarQube代码审查
CI持续集成流程 pipeline jenkins安装pipeline插件: 简单使用: 查看流水线语法: 片段生成器: 2.0以后推荐使用声明式语法:右侧下拉框是一些步骤,都可以自动生成 Decla ...
- 自动化代码审查平台: 基于Docker Compose整合Jenkins + SonarQube
目录 代码审查平台 本文目标 环境要求 系统环境 组件服务版本 前言 代码评审 SonarQube简介 概述 部署流程 检查系统参数 设置系统参数 拉取代码 进入文件目录 创建数据卷目录 部署文件信息 ...
- docker运行gerrit(代码审查工具)
gerrit是什么? Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面. gerrit背景 Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面.利用网页浏览器,同一个团队的软 ...
- CloudBees发布“Jenkins X”:面向部署到Kubernetes中的现代云应用的CI/CD解决方案
\ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ James Strachan和CloudBees团队发布了开源的"Jenkins ...
- jenkins 手动执行_Jenkins(一)
欢迎关注我公众号呀-「测试游记」「zx94_11」 从某种抽象层次上讲,部署流水线(Deployment pipeline)是指从软件版本控制库到用户手中这一过程的自动化表现形式.-<持续交付- ...
- Jenkins部署Python项目实战
一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...
- 代码审查工具StyleCop
"代码审查"或是"代码评审"(Code Review),这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法. ...
最新文章
- 标准库中的智能指针shared_ptr
- servlet解决javascript传来中文乱码问题
- UOJ #586. 旅行问题
- Ribbon-2通过代码自定义配置ribbon
- 快速部署Enterprise Manager Cloud Control 12c(12.1) Agent
- 输出最小公倍数和最大公约数
- k8s集群资源监控-监控指标和方案---K8S_Google工作笔记0052
- Linux与JVM的内存关系分析(转)
- Authentication failed for 错误
- 计算机的用户软件在哪,电脑自带录屏软件在哪?这里教你怎么找
- 传统版生产者消费者模式2.0
- 运营级如意影视源码+完整类库/无限增删解析API
- 找到的比较全的tcp/ip的协议号
- DEL: 华为无线modem变无线路由器
- 数据仓库上云那些事儿
- 将C语言的字符串转为OC的字符串
- 详细讲解二极管的钳位电路和限幅电路
- 最适合freshman的Java习题集(三)
- Linux shell 的ss
- mongodb安装和mongoVUE使用