Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建

*本篇文章已授权微信公众号guolin_blog(郭霖)独家发布
最终效果图:
【参数构建界面】
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第1张图片
【存档界面】
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第2张图片
【QQ消息通知界面】
效果图3.png

1、jenkins简介

基于Java开发的一种持续集成工具,用于监控持续重复的工作。有如下有点:
- 持续化构建;
- 一键触发,自动构建;
- 定时触发构建;
- 构建结果自动通知(自带邮件通知,可扩展QQ);
- 参数化构建,方便动态配置参数;
- 多任务并发执行,提高构建效率;
- 支持自动单元测试;
- 支持代码质量检测(插件findbugs)

2、jenkins安装

jenkins官方下载地址:https://jenkins.io/download 。安装方式可以通过下载war包或者msi安装包,两者的区别如下:
1. war包使用简单,下载后复制到Tomcat的webapps>jenkins目录(如果没有则新建),启动Tomcat,输入http://localhost/jenkins
2. msi安装成功后,会自动打开进入jenkins,如果失败很有可能是默认端口8080被占用,需要修改端口后重启。修改方法如下:
打开 jenkins安装所在目录/jenkins.xml,找到里面有个属性–httpPort,就是端口号设置。改成其它值后重启。重启方法为:打开cmd,输入net stop jenkins,再输入net start jenkins。

本人偏向于安装msi包,因为方便项目目录的管理(war包创建的项目默认保存在C盘)。第一次打开jenkins需要输入随机生成的初始密码,位于xxx/secrets/initialAdminPassword

3、插件安装

系统管理>管理插件>可选插件:
1. build-name-setter—用于设置项目的构建名称
2. Post-Build Script Plug-in
该插件的作用是,支持构建成功后,执行shell脚本(用于触发QQ消息通知)。目前官方已经停止该插件的下载,请点击本人分享的百度网盘链接下载:http://pan.baidu.com/s/1gfIge2Z 。安装方法如下:
系统管理>管理插件>高级>上传插件
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第3张图片

4、jenkins配置

4.1 系统设置

SDK环境变量配置:
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第4张图片

4.2 Config Global Security

用户权限设置
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第5张图片
标记格式设置
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第6张图片

4.3 Global Tool Configuration

JDK环境变量设置(推荐使用JDK1.8)
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第7张图片
Gradle环境变量设置(推荐使用2.14.1版本)
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第8张图片

5、创建项目及详细配置

5.1 新建项目

新建>构建一个自由风格的软件项目
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第9张图片

5.2 项目配置

5.2.1 General

参数化构建
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第10张图片
添加参数>Choioce Parameter/String Parameter
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第11张图片
本案例涉及的参数化配置如下:
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第12张图片
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第13张图片
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第14张图片
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第15张图片
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第16张图片
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第17张图片

5.2.2 源码管理

第一次配置需要添加SVN账号信息,点击Add进行添加
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第18张图片
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第19张图片

5.2.3 构建触发器

Poll SCM:根据配置,定时触发(如果代码有更新,会自动进行构建)
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第20张图片

5.2.4 构建环境

勾选Set Build Name。如果没有看到这个选项,请确认插件 build-name-setter 是否正常安装
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第21张图片

5.2.5 构建

新增Gradle脚本构建项:
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第22张图片
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第23张图片
说明:Tasks内容为Gradle执行的命令列表,说明:

-PXXX=${XXX} 参数渗透到项目的gradle.build配置里。注:key必现保持一致,才能正常渗透。

项目主module的build.gradle
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第24张图片
需要在主module下创建gradle.properties,并声明变量
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第25张图片
执行shell脚本,拷贝mapping.txt混淆文件,用于存档(方便定位分析线上bug)
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第26张图片

Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第27张图片

#检测mapping、apk目录,不存在则创建
mapping_dir="${WORKSPACE}\mapping"
apk_dir="${WORKSPACE}\apk"
if [ ! -d "${mapping_dir}" ]; then
  mkdir "${mapping_dir}"
fi
if [ ! -d "${apk_dir}" ]; then
  mkdir "${apk_dir}"
fi 

# 复制mapping文件到指定目录,并重命名

if [ "${ENVIRONMENT_BUILD}" = "release" ]; then

# mapping源文件

fromFile="项目module名称/build/outputs/mapping/${PRODUCT_FLAVOR}/release/mapping.txt"

# 目标mapping文件

toFile="mapping/jkt-v${APP_VERSION}-${PRODUCT_FLAVOR}-${ENVIRONMENT_BUILD}-${SVN_REVISION}-mapping.txt" echo "开始复制mapping文件" cp -f ${fromFile} ${toFile} echo "结束复制mapping文件" fi

5.2.6 构建后操作

设置apk和mapping文件存档,方便下载查看
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第28张图片
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第29张图片
说明:
1. 忽略红色提示,前提是明确需要存档的文件存在;
2. 用于存档的文件如果有多个,需要使用,号分隔开。

 apk/jkt-v${APP_VERSION}-${PRODUCT_FLAVOR}-${ENVIRONMENT_BUILD}-${SVN_REVISION}.apk,mapping/jkt-v${APP_VERSION}-${PRODUCT_FLAVOR}-${ENVIRONMENT_BUILD}-${SVN_REVISION}-mapping.txt 

添加构建结果QQ消息通知
如果没有看到如下选项,请确认Post-Build Script Plug-in是否安装,安装方法请查看上面的【插件配置】
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第30张图片
这里使用Mojo-Webqq完成QQ消息发送,
下载地址:http://share-10066126.cos.myqcloud.com/Mojo-StrawberryPerl-20170606.rar
使用教程:https://github.com/sjdy521/Mojo-StrawberryPerl
效果图:
效果图3.png
构建成功后执行shell脚本,使用curl模拟发送post请求
Android: Jenkins+SVN+Gradle+QQ Mojo实现项目自动化构建_第31张图片

#使用URL编码,避免中文乱码。内容【构建成功,请前往下载】
message="%e6%9e%84%e5%bb%ba%e6%88%90%e5%8a%9f%ef%bc%8c%e8%af%b7%e5%89%8d%e5%be%80%e4%b8%8b%e8%bd%bd"
curl -d "uid=QQ群号&content=消息内容" "http://127.0.0.1:5000/openqq/send_group_message" | iconv -f utf-8 -t utf-8

6、总结

按照上面的步骤操作,相信可以搭建一个属于你的持续化自动构建平台。Jenkins通过插件,可以丰富使用功能。如,代码质量检测、单元自动测试等。摆脱繁杂重复的构建工作,从Jenkins开始。如有疑问、问题,欢迎留言交流。

你可能感兴趣的:(Android开发)