开发人员写代码过程中就实现自动代码检视,编辑器会提示编码规范错误,并给出正确实例,写完代码只需要提交到SVN库,然后启动自动化构建(可配置代码提交SVN后自动触发),测试环境中的项目马上和当前SVN库一致。告别专门召集代码检视会议(或只需要检视业务流程)、告别手工编译打包、安装。
----------------------------------------------------------------------------------从word文件copy出来,懒得弄图片了,so 无图。
第一章Jenkins配置
jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, php, python等几乎所有语言)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。
jenkins本身是用java语言开发的,所以安装jenkins的机器至少要有jdk,另外建议git/svn、ant/maven/gradle等工具也一并安装好,方便与这些构建工具集成。
1.1 安装Jenkins
可以直接在jenkins官方网站上:https://jenkins.io/index.html
下载jenkins的文件jenkins.war文件
有两种启动方法。
首先保证系统中已经安装了jdk,最好是jdk1.8, 并配置好环境变量。
第一种启动方法,切换到jenkins.war存放的目录,输入如下命令:
$ java -jar jenkins.war
然后在浏览器中输入http://localhost:8080,localhost可以是本机的ip,也可以是计算机名。就可以打开jenkins
第二种方法是用jetty打开
将jenkins.war文件放入jetty下的webapps目录下,启动jenkins时,在地址栏上输入
http://localhost:8080/jenkins 就可以访问
1.2 配置Jenkins
由于Jenkins配置在网上资料很多,这里只列出关键操作:
1、 登录Jenkins,选择“系统管理->插件管理->可选插件”,安装如下插件;
a) 邮件插件:Email Extension Plugin
b) Maven插件:Maven Integration plugin
c) SVN插件:SVN Publisher plugin
d) SSH插件:SSH plugin/Publish Over SSH
刚安装需要等一会儿才有插件列表,如果安装失败就看下失败原因,一般是因为有依赖插件未安装(在插件管理中选择的都会自动把依赖插件一起安装好),只需安装提示插件即可,有时候也会因为网络原因需要安装多次才能装上。
2、 完成插件安装后,选择“系统管理->系统设置”,配置邮件和相关服务器信息即可
Remote Directory是指定SSH进入的目录,注意先确认用户是否有权限。
3、 完成系统配置后,选择“系统管理-> Global Tool Configuration”,配置JDK和Maven
JDK和Maven需要预先安装好,然后再这里指定安装目录。
1.3 创建Job
1、创建项目
a)登录Jenkins,选择“新建”,输入项目名称后选择“创建一个*风格的软件项目”
b)进入上面建的Job,选择“配置”,进入配置界面
c)配置“丢弃旧的构建”
这里主要是配置构建任务的保留数
d)配置“源码管理”和“构建触发器”
如果公司的SVN库被加密,所以这里选择“None”,后面步骤中采用将代码下载到“/home/XXX/.jenkins/workspace/Job名称”目录中。
选择“Build periodically”可以定时启动构建任务,比如每天凌晨1点启动构建,另外“Poll SCM”是定时检查源码库提交情况来启动构建,由于这里没有使用源码管理,所以该选项用不上。如果有源码管理,该配置会根据指定频率检测代码变化,触发构建。
e)配置“构建环境”
i.如果公司SVN被加密,SVN插件不能用,所以在构建前先到服务器下载代码,选择“Send files or execute commands over SSH before the build starts”指定构建服务器,调用下载代码的脚本sh buildSVN.sh jobID svnURL例如:“sh /home/XXX/jenkins/build/buildSVN.sh JOBID SVNURL”。
ii. 接上面完成代码下载后,可以选择“Add Transfer Set”再加一个,到安装服务器上执行安装前数据清理操作。
iii. 完成前置操作之后,就可以配置打完包之后的操作了,选择“Send files or execute commands over SSH after the build runs”是在打完包之后进行的操作,由于项目的发布/转测试模式是打完包后,直接发邮件通知配置管理员到打包目录获取软件包,然后配置管理员根据软件包中的SVN版本号进行打分支,所以这需要做软包添加SVN版本号的处理
iv.完成软件包处理之后,就可以将软件包上传到安装服务器上进行安装了,这里支持集群安装,有多少个集群只需要选择添加多个“Add Transfer Set”就行了
自动安装得先有自动安装脚本,这里也就是解压、调用setup.sh脚本
f)最后就是配置“构建”和“构建后的操作”
配置maven编译、打包工具, 邮件根据实际情况配置即可,其他不需要编译的非Java项目,可以不需要配“构建”选项
构建后操作,选择邮件组件,然后加上需要发送和抄送人
2、 完成配置后,直接选择“保存”,然后选择“立即构建”
a) 选择自动创建的构建任务,可以查看任务执行情况
b) 进入“Console Output”查看实时构建信息
至此,整个Jenkins操作完成!
1.4 注意事项
1、 只搭一套环境,大家都统一使用这一套即可,不要再重复维护其他的环境,直接在该环节创建Job即可,方便统一管理。
2、 启动后所有文件都存贮在 /home/用户名/.jenkins 目录下,可以通过备份/.jenkins/job/项目名/config.xml文件来保留配置。
3、 请不要随意修改其他人的Job,创建自己的就好。
第二章SonarQube配置
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量,通过插件形式,可以支持包括java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy,Python等等二十几种编程语言的代码质量管理与检测。
2.1安装SonarQube预置条件
1、 已安装Java环境
2、 已安装有数据库(支持多种数据库,我们这里用公司统一的PostgreSQL)
3、 软件下载地址:http://www.sonarqube.org/downloads/
4、 下载SonarQube与SonarQube Runner
5、 数据库配置:
进入数据库命令
su postgres
psql
create user sonar with password 'sonar';
create database sonar owner sonar;
grant all privileges on database sonar to sonar;
2.2安装SonarQube和 sonar-runner
安装sonar与sonar-runner
a)
将下载的sonar-3.7.zip包解压至Linux某路径如/usr/local
b)
将下载的sonar-runner-dist-2.3.zip包解压某路径/usr/local
c)
添加SONAR_HOME、SONAR_RUNNER_HOME环境变量,并将SONAR_RUNNER_HOME加入PATH
d)
修改sonar配置文件
修改/conf/sonar.properties文件,配置数据库设置,默认已经提供了各类数据库的支持
这里使用PostgreSQL,因此取消PostgreSQL模块的注释,然后
e)
修改sonar-runner的配置文件
修改/conf/sonar-scanner.properties文件
2.3配置SonarQube
1、 执行安装目标下/bin/linux-x86-64/sonar.sh
start|stop|restart 就可以进行启停重启操作。
2、 启动服务后访问http:\\localhost:9000即可
3、 登录SonarQube服务器后,可以查看项目中的问题、指标,并可以对代码规则、质量配置、质量阀和系统进行设置
4、
其中质量配置和质量阀都可以每个项目创建自己的标准,然后在项目指定即可
5、 如果有些指标项目需要调整,可以直接在问题中对相关指标进行修改
6、 修改完指标和阀值后重新运行sonar-runner就会根据最新规则进行分析
2.4配置sonar-runner
1、
在项目源码的根目录下创建sonar-project.properties配置文件,文件内容如下
sonar.projectKey=项目名
sonar.projectName=Simple Android project analyzed with the SonarQube Runner
sonar.projectVersion=1.0
sonar.sources=src
sonar.binaries=bin/classes
sonar.language=java
sonar.sourceEncoding=UTF-8
这里language可以是C/C++/Python等其他语言
2、
因为环境变量已配置,可在任意目录下执行sonar-runner命令,运行完成后登录到SonaQube,就可以查看刚刚添加的项目分析情况了
2.5Eclipse配置SonarLint插件(Java)
1、
打开eclipse,进入help->Eclipse Marketplace,输入sonar,安装sonarLint
2、
完成安装重启eclipse后,在window->show view中选择Sonar三个视图
3、
在SonarQube
Service中配置SonarQube服务信息
4、
最后右击项目工程,选择SonarLint->build…
然后选择对应的项目(可以在Sonar服务上配置好项目,供这里选择,也可以不配置)
5、
最后打开类文件就可以看到实时的分析结果了
该操作只用于eclipse,其他项目可以使用sonar-runner分析后登录SonarQube服务器上查看分析结果。
2.6注意事项
1、 只搭一套环境,大家都统一使用这一套即可,不要再重复维护其他的环境,直接在该环节创建Job即可,方便统一管理。
2、 每个项目可以到SonarQube服务器定制自己的编码规范,都创建自己项目的,其他项目的不要动。
3、 Jenkins自动化过程中,调用SVN代码下载之后会调用自动代码分析,需要注意在代码根目录添加sonar-project.properties配置文件。
关于Java开发过程中质量提升-2自动化的更多相关文章
-
关于Java开发过程中质量提升-1代码格式配置
在项目开发维护中,编码规范作为开发规范的一个组成部分,是十分重要和必须的,它不仅仅是为了提高开发效率,也有利于降低后期维护开发的成本.编码规范的根本目的就是要让不仅代码可以一目了然,也可以很容易的理解 ...
-
【Java基础】Java开发过程中的常用工具类库
目录 Java开发过程中的常用工具类库 1. Apache Commons类库 2. Guava类库 3. Spring中的常用工具类 4. 其他工具 参考 Java开发过程中的常用工具类库 1. A ...
-
android(java) 开发过程中经验及总结记录
android(java) 开发过程中经验及总结记录
-
java开发过程中从前台传到后台中文乱码《filter》
在企业开发中,最常见的是javaweb项目,有web项目就免不了和后台打交道,比如我从jsp页面发送新增请求到后台,后台可能是servlet.struts2.springmvc等,这时就存在一个问题, ...
-
Java开发过程中乱码问题理解
1.Java编译器(即编译成class文件时) 用的是unicode字符集.2.乱码主要是由于不同的字符集相互转换导致的,理论上各个字符的编码规则是不同的,是不能相互转换的,所以根本解决乱码的方法就是 ...
-
Java开发过程中开发工具Eclipse中导入jar包的过程
欢迎欣赏我的第二篇随笔.我们在创建好一个动态网站项目之后,如果没有部署maven的情况下,你可以按照以下的方法,直接把要用的jar包导入你的工程中,而不用再部署maven. 例如在使用JDBC编程时需 ...
-
java开发过程中,报错Dangling meta character '*' near index 0,解决办法
1.split方法转化字符串为数组: String[] strPicArr = map.get("hw_pic").toString().split("*"); ...
-
JAVA开发过程中的各种小坑
1.有时候你在本地跑的ECLIPSE中得到的正确的结果,部署到服务器上使用其他容器,如tomcat或WARS的时候,跑出的结果也许就不一致, 我们程序员会经常抱怨,在我机器上跑的好好的. 在不同的容器 ...
-
java开发过程中几种常用算法
排序算法 排序算法中包括:简单排序.高级排序 简单排序 简单排序常用的有:冒泡排序.选择排序.插入排序 冒泡排序代码如下: private static void bubbleSrot(int[] a ...
随机推荐
-
oracle 表字段添加 修改 删除语法
修改列名 alter table 表明 rename column rename 老列名 to 新列名添加 字段alter table 表名 add(字段名 类型):删除字段alter table 表 ...
-
[jquery]添加行内容后根据下拉菜单选择内容对比之前已有选项,若有重置再提示
今天页面上一个添加列内容时,要对选择内容与之前已有选项内容作对比,防止用户重复选择内容 页面HTML代码 <ul class="list-group xj-list-NObor xj- ...
-
[原创]使用Gradle的插件EnIDE build的时候,输出的中文总是乱码。
使用Gradle的插件EnIDE build的时候,输出的中文总是乱码.解决办法:在EnIDE的设置里面,设置JVM options GRADLE_OPTS 为:-Dfile.encoding=UTF ...
-
UVa 1152 4 Values whose Sum is 0
题意:给出n,四个集合a,b,c,d每个集合分别有n个数,分别从a,b,c,d中选取一个数相加,问使得a+b+c+d=0的选法有多少种 看的紫书,先试着用hash写了一下, 是用hash[]记录下来a ...
-
POJ3237-Tree (树链剖分,线段树区间更新+点更新+区间查询)
两个更新操作,一个将第i条路径权值改为w,一个是将a-b之间所有路径权值取反. 一个查询操作,求a-b之间路径中权值最大的边. 很容易想到维护一个最大最小值,取反就是把最大最小取反交换一下. 开始遇到 ...
-
folat i = 0.1; 警告
今天的用途 float i = 0.1;那么编译器警告实际: #include <iostream> using namespace std; int main() { float k ...
-
Android中购物车的全选、反选、问题和计算价格
此Demo主要解决的是购物车中的全选,反选计算价格和选中的条目个数的问题,当选中几条时,点击反选,会把当先选中的变为不选中,把不选中的变为选中.点击全选会全部选中,再次点击时,变为全部不选中. //- ...
-
MySQL之数据的简单查询
我直接把我的mysql学习笔记以图片的形式粘贴在这里了,供自己回顾(都是一些简单的语句)
-
loadRunner手动关联,通过 web_reg_save_param()函数
Action() { //<B>sign up now</B></A> /* web_reg_save_param_regexp( ...
-
VS2010/MFC编程入门之七(对话框:为对话框添加控件)
创建对话框资源需要创建对话框模板.修改对话框属性.为对话框添加各种控件等步骤,前面一讲中鸡啄米已经讲了创建对话框模板和修改对话框属性,本节继续讲如何为对话框添加控件. 上一讲中鸡啄米创建了一个名为“A ...