Windows环境下jenkins +svn+android studio自动化构建(持续集成,打包)
2016-09-23 09:40
1106 查看
之前打包都是RD通过Android studio或者Eclipse /adt手动打包生成apk给QA测试,现在技术总监要求对项目进行持续集成,也就是说通过某种方式定时(比如每天凌晨三点)自动将SVN库中最新的代码down下来编译打包,QA也可以通过Jenkins手动构建最新的代码打包,不用每次都由RD手动打包生成apk黑QA,而且多渠道打包又很繁琐.
软件环境:
1、 windows7 64bit;
2、 jdk1.8
3、 android sdk
4、 gradle2.10
首先得配置环境变量,JDK,Android SDK,Gradle 就不用说了,Android开发应该都配好了,配置tomcat,直接去官网下载tomcat,解压下载好的tomcat,
复制路径配置环境变量,新建环境变量:
变量名:CATALINA_HOME
变量值:解压后的路径
![](https://img-blog.csdn.net/20160923151301759?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
找到path加上;%CATALINA_HOME%\lib启动tomcat,ok了
![](https://img-blog.csdn.net/20160923151411526?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
接下来就是安装Jenkins了.官网下载jenkins
![](https://img-blog.csdn.net/20160923151549590?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
点击Download Jenkins,我下载的是2.23版本.
![](https://img-blog.csdn.net/20160923151707769?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
解压该文件后
![](https://img-blog.csdn.net/20160923151718785?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
点击安装OK了.安装完成后会自动跳转到localhost:8080下.ok静静地等待网页加载,时间可能会久一点,耐心的等待.
加载完成后会提示选择安装插件,第一个是默认推荐的插件,第二个是自己选择要安装的插件,插件安装完后创建用户和用户名
完事后登陆.
![](https://img-blog.csdn.net/20160923151817250?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20160923151940721?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
点击系统管理
![](https://img-blog.csdn.net/20160923152042942?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
接
e63c
下来的就是下载我们需要的插件了
![](https://img-blog.csdn.net/20160923152228116?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
选择我们需要的插件Android
Lint Plugin,Gradle Plugin,svn需要的插件在安装的时候推荐安装里面已经安装好了
安装好了后进入到系统管理->系统设置,修改系统设置
![](https://img-blog.csdn.net/20160923152228116?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
Jenkins Location标签中
系统管理员邮件地址:admin@163.com
Extended E-mail Notification标签中
SMTP server : smtp.163.com
Default user E-mail suffix :admin@163.com
Default Content Type :Plain Text(text/plain)
Default Recipients :receiver1@163.com,receiver2@163.x,...,receivern@163.com
Reply To List : admin@163.com
Default Subject :构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
Default Content :
(本邮件是程序自动下发的,请勿回复!)<br/>
项目名称:$PROJECT_NAME<br/>
构建编号:$BUILD_NUMBER<br/>
svn版本号:${SVN_REVISION}<br/>
构建状态:$BUILD_STATUS<br/>
触发原因:${CAUSE}<br/>
构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/>
构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/>
变更集:${JELLY_SCRIPT,template="html"}<br/>
邮件通知标签中
SMTP服务器:smtp.163.com
用户名:admin
密码:123456
SMTP端口:选中SSL填465,没选中填25
Reply-To Address:admin@163.com
字符集:UTF-8
![](https://img-blog.csdn.net/20160923154948987?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
设置完成后就可以新建项目了
![](https://img-blog.csdn.net/20160923170729055?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
点击ok
![](https://img-blog.csdn.net/20160923170910492?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
项目使用的是svn,如果项目使用git的话,需要下载git插件.其中源码管理是一样的.
![](https://img-blog.csdn.net/20160923171022981?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
注:svn仓库地址如果需要账号密码登录,直接点击add添加
![](https://img-blog.csdn.net/20160923171208306?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
构建触发器
![](https://img-blog.csdn.net/20160923171302775?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
下一步构建:
![](https://img-blog.csdn.net/20160923171527385?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
由于项目使用的是studio,所以选择了gradle script:
![](https://img-blog.csdn.net/20160923171716927?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
也可以选择Invoke gradle,系统环境变量里配置了gradle环境变量,选择相应的gradle版本.
使用Jenkins编译AndroidStudio工程进行简单地持续集成的时候,有些配置要注意。
新建Job的时候选择使用GradleWrapper而不是单纯的Gradle。AndroidStudio编译的时候,使用的GradleWrapper,因此需要这个。具体的GradleWrapper的位置在gradlew.bat这个批处理文件中配置。因此如果编译过程出现GradleWrapperMain找不到的时候,可以尝试对这个批处理文件进行调试,查看信息。
AndroidStudio项目的local.properties中有一个sdk.dir属性,用于声明sdk的地址。这个地址一般是开发机器的环境配置有关。因此Jenkins所在的机器配置可能会不一致造成sdk找不到这个错误。因此提交SVN的时候建议修改这个属性值为Jenkins所在机器的配置参数。一个相对合适的方法是删除这个属性,然后提交,在Jenkins所在的机器配置ANDROID_HOME这个环境变量,为SDK的地址。这样编译的时候会从ANDROID_HOME这个环境变量地址去找SDK。
建议Jenkins所在机器尽可能包括最新的SDK,同时开发环境也更新到最新SDK,这样编译的时候就不会出现对应API版本的SDK不存在的问题。也不需要提交的时候修改API版本了。
最后是构建后操作,选择Publish Android Lint result,Archive the artifacts,E-mail Notification插件
![](https://img-blog.csdn.net/20160923171935259?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
ok,点击保存,构建项目
![](https://img-blog.csdn.net/20160923172038526?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
构建中...
![](https://img-blog.csdn.net/20160923172200669?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20160923172317983?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
ok,构建成功
查看项目
![](https://img-blog.csdn.net/20160923172438687?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
渠道包已经打好,点击对应的apk,QA就可以下载安装了.
PS:本人也是小白.第一次搞这个,踩了几天的坑.后续会持续更新此贴.
软件环境:
1、 windows7 64bit;
2、 jdk1.8
3、 android sdk
4、 gradle2.10
首先得配置环境变量,JDK,Android SDK,Gradle 就不用说了,Android开发应该都配好了,配置tomcat,直接去官网下载tomcat,解压下载好的tomcat,
复制路径配置环境变量,新建环境变量:
变量名:CATALINA_HOME
变量值:解压后的路径
找到path加上;%CATALINA_HOME%\lib启动tomcat,ok了
接下来就是安装Jenkins了.官网下载jenkins
点击Download Jenkins,我下载的是2.23版本.
解压该文件后
点击安装OK了.安装完成后会自动跳转到localhost:8080下.ok静静地等待网页加载,时间可能会久一点,耐心的等待.
加载完成后会提示选择安装插件,第一个是默认推荐的插件,第二个是自己选择要安装的插件,插件安装完后创建用户和用户名
完事后登陆.
点击系统管理
接
e63c
下来的就是下载我们需要的插件了
选择我们需要的插件Android
Lint Plugin,Gradle Plugin,svn需要的插件在安装的时候推荐安装里面已经安装好了
安装好了后进入到系统管理->系统设置,修改系统设置
Jenkins Location标签中
系统管理员邮件地址:admin@163.com
Extended E-mail Notification标签中
SMTP server : smtp.163.com
Default user E-mail suffix :admin@163.com
Default Content Type :Plain Text(text/plain)
Default Recipients :receiver1@163.com,receiver2@163.x,...,receivern@163.com
Reply To List : admin@163.com
Default Subject :构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
Default Content :
(本邮件是程序自动下发的,请勿回复!)<br/>
项目名称:$PROJECT_NAME<br/>
构建编号:$BUILD_NUMBER<br/>
svn版本号:${SVN_REVISION}<br/>
构建状态:$BUILD_STATUS<br/>
触发原因:${CAUSE}<br/>
构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/>
构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/>
变更集:${JELLY_SCRIPT,template="html"}<br/>
邮件通知标签中
SMTP服务器:smtp.163.com
用户名:admin
密码:123456
SMTP端口:选中SSL填465,没选中填25
Reply-To Address:admin@163.com
字符集:UTF-8
设置完成后就可以新建项目了
点击ok
项目使用的是svn,如果项目使用git的话,需要下载git插件.其中源码管理是一样的.
注:svn仓库地址如果需要账号密码登录,直接点击add添加
构建触发器
下一步构建:
由于项目使用的是studio,所以选择了gradle script:
也可以选择Invoke gradle,系统环境变量里配置了gradle环境变量,选择相应的gradle版本.
使用Jenkins编译AndroidStudio工程进行简单地持续集成的时候,有些配置要注意。
新建Job的时候选择使用GradleWrapper而不是单纯的Gradle。AndroidStudio编译的时候,使用的GradleWrapper,因此需要这个。具体的GradleWrapper的位置在gradlew.bat这个批处理文件中配置。因此如果编译过程出现GradleWrapperMain找不到的时候,可以尝试对这个批处理文件进行调试,查看信息。
AndroidStudio项目的local.properties中有一个sdk.dir属性,用于声明sdk的地址。这个地址一般是开发机器的环境配置有关。因此Jenkins所在的机器配置可能会不一致造成sdk找不到这个错误。因此提交SVN的时候建议修改这个属性值为Jenkins所在机器的配置参数。一个相对合适的方法是删除这个属性,然后提交,在Jenkins所在的机器配置ANDROID_HOME这个环境变量,为SDK的地址。这样编译的时候会从ANDROID_HOME这个环境变量地址去找SDK。
建议Jenkins所在机器尽可能包括最新的SDK,同时开发环境也更新到最新SDK,这样编译的时候就不会出现对应API版本的SDK不存在的问题。也不需要提交的时候修改API版本了。
最后是构建后操作,选择Publish Android Lint result,Archive the artifacts,E-mail Notification插件
ok,点击保存,构建项目
构建中...
ok,构建成功
查看项目
渠道包已经打好,点击对应的apk,QA就可以下载安装了.
PS:本人也是小白.第一次搞这个,踩了几天的坑.后续会持续更新此贴.
相关文章推荐
- androidAsyncTask及Gson的结合使用
- AndroidTimer 简单的倒计时、正计时切换
- Android30--Android之CoordinatorLayout布局的使用方式
- Android数据加密之Aes加密
- 安卓包重复引用解决方案Android Studio com.android.dex.DexException: Multiple dex files define
- Android 开发之——多种方式实现主界面的Tab
- Android开发需要注意的问题
- [Android知识体系]之四大组件:activity(LaunchMode和Flag)
- android 学习随笔十四(页面跳转与数据传递)
- Android中在用户登录时如何识别是否是一个正确的手机号码
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
- Android jni/ndk编程二:jni数据类型转换(primitive,String,array)
- Android数据加密之Rsa加密
- Android Dalvik虚拟机初识
- Decompiled .class file,bytecode version:52.0(Java 8) Source for 'Android API 24 Platform' not found
- Android Easeui 3.0 即时通讯的问题汇总
- android监听应用自身被卸载
- Android数据加密之SHA安全散列算法
- Android数据加密之SHA安全散列算法