Jenkins + Gradle + SonarQube 项目持续集成并分析环境搭建

SonarQube

简介

SonarQube是一个开源的代码质量管理平台,可以通过插件机制集成不同的测试工具、代码分析工具以及继续集成工具。比如pmdcpd、checkstyle、findbugs、jenkins等。具体的代码分析工具介绍,见http://tianya23.blog.51cto.com/1081650/415146.
但是SonarQube并不是简单的将各种质量检测工具的结果直接展示给用户,而是通过不同的插件算法对这些结果进行在加工,最终以量化的方式来衡量代码质量。

特点

1.支持25+种编程语言
2.多维度分析项目质量

1.Architecture&Design
2.Duplications
3.Unit tests
4.Complexity
5.Potential bugs
6.Coding rules
7.Comments

架构图

sonarQube.png

安装

见另一个附件《SonarQube Win安装部署与实践》


jenkins

介绍

jenkins是一个持续集成管理平台,每一次集成都是通过自动化的构建来验证,包括自动编译、发布和测试。简单的说,就是定时的或者指定触发条件的自动执行我们定义好的命令或脚本对项目进行相关的处理,并将结果反馈给开发者。

特点

1.易安装,无需数据库
2.易配置,所有配置都是通过web页面
3.变更支持,Jenkins能从代码仓库(Subversion/CVS)中获取并产生代码更新列表并输出到编译输出信息中
4.集成E-mail,将结果反馈

安装

见另一个附件《Jenkins + Gradle + SonarQube 项目持续集成并分析环境搭建》

jenkins + SonarQube

实现自动分析项目,并将分析结果自动更新到SonarQube,每次查看SonarQube都是最新的分析结果

Jenkins + Gradle + SonarQube 项目持续集成并分析环境搭建

jenkins简单介绍


    Jenkins 是一个可扩展的持续集成引擎。

主要用于

    1.持续、自动地构建/测试软件项目。
    2.监控一些定时执行的任务。

优势

    1.软件构建自动化 :配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建
    2.构建可持续的自动化检查 :CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力
    3. 构建可持续的自动化测试 :构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。
    4.生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件等

jenkens安装

前往官网,选择其中的.war文件进行下载。
安装方式 | 必须安装jdk环境
1.必须事先安装Tomcat服务器,然后将.war文件放到webapps目录下,重启Tomcat就可以了。
2.直接进入cmd,使用命令

java -jar jenkins.war

使用这种方式进行安装,使用的是jenkins内置的服务器。
安装成功(cmd会出现类似jenkins is running)后,然后在浏览器输入http://localhost:8080
如果出现“网络无法运作”,请检查当前是否使用的代理服务器,应该转为“直接连接”
网页加载成功后,出现一下界面

2.png

在框中输入控制台输出的密钥

3.PNG

如果是通过Tomcat安装,密钥在webapp.jenkins\secrets\initialAdminPassword文件中
之后就是注册用户名
注册成功并登陆后,便出现一下界面

4.png

安装推荐插件

5.png

安装完成后,进行环境的配置


1.点击系统管理

6.PNG

2.点击Global Tool Configuration

7.PNG

3.配置jdk,配置git

8.PNG

4.配置gradle

9.PNG

jenkins集成的项目使用的gradle版本,这里必须配置,因为自动构建需要和项目使用相同版本的gradle
5.点击Save
6.安装Android SDK
点击系统设置

10.PNG

7.配置Android Home全局属性,全局属性对所有项目生效

11.PNG

8.点击Save
9.安装Android Line插件,点击管理插件

7.PNG

创建Job


点击新建

6.PNG

2.填写名称,选择自由风格的软件项目

12.PNG

3.简单介绍下面内容

13.PNG

1.丢弃旧的构建
1.1保持构建的天数,表示构建的内容在1天内不被删除,操作1天后删除
1.2表示允许保持构建的最大数量,当超过这个数量时,最前面的构建会被删除
2.参数化构建,就是在构建时传入一下参数,这些参数会被配置到项目中,并且可以影响后面的构建步骤。详情请点击有点的?

4.配置项目Git地址,可以选择构建的分支

14.PNG

5.点击Add填写Git账号和密码

15.PNG

6.构建触发器,就是什么时候触发构建

16.PNG

有多种触发形式
这里介绍第三种,定时构建
可以规定每天,或者某个时候进行定时构建。日程表中的内容是安装一个格式编写的,详情可以点击右边的?

7.点击增加构建步骤,选择gradle script

17.PNG

8.可以选择invoke Gradle,此时是从刚才配置的Gradle版本选择一个,但是必须和项目是同一个版本,或者选择Use Gradle Wrapper,此时的Wrapper location,就是项目的根目录,有build.gradle,gradlew的根目录。Tasks就是clean build这类gradle命令,可以连着写。
推荐在命令后加上

--stacktrace --debug

例如

clean assembleRelease --stacktrace --debug
18.PNG

但是当我们要使用SonarQube时,只能选择Use Gradle Wrapper
配置如下,其中Root Build script就是要构建的根目录。此时选择的时andfix模块

19.PNG

9.设置构建完成之后的操作

20.PNG

设置邮件提醒。但是使用邮件还得配置其他,这里不做介绍。
10.点击Save


在主界面点击刚才创建的项目

22.PNG

点击立即构建。
如果出现失败,点击#*,进入后点击Console Output查看控制台信息
一般错误:
1.Gradle版本不一致,更改Gradle版本
2.项目使用的SDK版本在刚才配置的sdk路径中没有,安装相应的sdk版本
3.项目中使用的sdk路径找不到,这时可以更改项目根目录下的local.properties文件,将sdk路径改为正确的路径

构建成功后,图片时蓝色的。
然后进入sonarQube服务器,便可以看到刚才自动构建的项目。

注意

1.如果项目中的sonarLine绑定了Sonar服务器,要解绑

26.PNG

2.配置项目的gradle.properties

25.PNG

3.确保git上的项目有2中的配置

SonarQube分析配置

1.安装Android Lint

27.PNG

2.设置Android Lint的父类为Sonar Way

28.PNG

此时Android Lint就有了Android Lint检测规则,也有了原来Sonar Way的检测规则。
3.设置Android Lint为默认的质量配置,之后的自动构建使用Android Lint
4.更新的项目情况,在SonarQube可以清晰的看到

30.PNG
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容