项目运作实践(二)
Jenkins部署和使用
前文“项目运作实践”中明确了自动化集成环境的重要性。自动化集成工具是项目高效运作不可或缺的利器。本文简述一下Jenkins自动化集成环境的部署和使用,以android项目为例。
一. Jenkins简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
二. Jenkins部署
Jenkins有两种部署方案。Windows中可以直接运行安装包;也可以在Tomcat容器中直接运行,实现跨平台。下文以tomcat中部署为例。
2.1 环境部署
JDK安装,Gradle安装,Linux版本Android SDK安装
环境变量配置
Tomcat容器安装
复制Jenkins.war包到tomcat app目录
2.2 系统初始化
Jenkins首次启动需要初始化密码
安装建议插件
完成初始化后运行
2.3环境配置
Gradle 属性配置。注意jvm参数,配置不当版本构建过程中会出现OOM现象
Git,SVN配置
邮件服务器配置
2.4 其他设置
用户管理,系统管理->管理用户,创建/删除/修改 Jenkins用户
角色权限管理,系统管理->管理分配角色,管理分配不同用户使用不同的任务
三. Jenkins任务
3.1 创建工程工作区
3.2 工程配置
Git配置,账户添加代码获取私钥
源码管理中,通过Credentials后面Add进入私钥添加界面,将本地Git版本库公钥配套的私钥信息进行添加,完成保存。环境请求Git版本库获取代码需要校验。
配置Git代码库
构建版本需要获取代码,Git版本库配置:
3.3 构建触发器
远程出发构建
设置触发令牌
通过浏览器触发构建
http://xxx.xxx.xx.xx:8080/jenkins/job/xxx_produce/build?token=produce&case=构建发布版本
token=produce 令牌;与服务器内部配置一致。
cause=构建发布版本; 描述本次构建说明。
固定周期性构建
- 日程表配置语法
日程表配置语法和Linux中cron的配置语法一致。每一行有5个字段,字段之间以Tab或者空格区分,各字段含义如下:
MINUTE HOUR DOM MONTH DOW
MINUTE Minutes within the hour (0-59)
HOUR The hour of the day (0-23)
DOM The day of the month (1-31)
MONTH The month (1-12)
DOW The day of the week (0-7) where 0 and 7 are Sunday
每个字段可以指定多个值,规则如下:
** 表示所有的取值
M-N 表示一个取值区间 (M, N)
M-N/X 或 /X 表示取值区间(M, N)或者所有取值()范围中每X一次
H 表示取随机数,如:H H(0-7) * * * 意为每天一次,0点到7:59之间随机取一个时间 - 日程表配置举例
H/15 * * * * //每十五分钟一次,具体时间点随机取
H(0-29)/10 * * * * //每个小时前半小时内每10分钟执行一次,具体时间点随机取
45 9-16/2 * * 1-5 //每周一到周五,每天9点到16:59之间两小时一次,每次在45分执行。执行时间点为9:45, 11:45, 13:45, 15:45
H H 1,15 1-11 * //每年月到11月,每月1日、15日,随机时间执行一次 - 任务配置举例
每周二到周六凌晨1点钟某个时间点进行一次构建
轮询代码库构建
轮询日程表配置方法参考上一节内容。当执行时间到时,检查git上面是否有新的提交。有新的提交则开始构建任务,否则不执行。下面示例表示每周一到周六上午9点到18:59之间每两小时执行一次,具体时间点随机获取。
构建前/后执行ssh服务器命令
可以在构建开始前,或者构建结束后执行ssh命令,如:构建完成后将版本转存到指定服务器(SVN),或将构建目录下面的输出版本拷贝到指定服务器制定目录(运行自动化测试服务器)。
3.4 构建配置
使用环境配置Gradle构建
Gradle的配置可以在系统设置中增加,这里只有选择正确的版本就可以。
使用命令构建
更丰富的shell命令可以根据自己项目本身的需要进行设计。
3.5 构建后操作
Lint代码静态检查报告归档,以及归档总结
构建生成版本归档
版本归档后发出邮件通知
3.6 项目使用示例
以上章节进行配置后,对自己的项目进行配置,展示一些构建成果;本工程有多个渠道版本被每次构建同时生成。
四. 其他内容
邮件服务器配置;版本转存,归档到svn;单元测试;单元测试覆盖率;自动化测试,真机自动化测试;参数化构建;团队使用环境权限控制等等内容,因篇幅有限不再细述,有需要逐个答复。
五. 总结
持续集成可以按照项目需要全天值守构建,可周期执行、可按需执行、可指定执行。项目存在多渠道版本输出,每次多个版本可以完全交给系统进行测试。持续集成环境的使用,可以降低研发、测试的人工投入,可以提早发现项目问题,可以提升项目运作效率。