一、需求说明:
因诸多因素影响以及条件的限制,当前我们APP的Android端的打包过是手动通过开发工具打包的;这样产生的问题是:
一、Android端的APK的产出得依赖开发人员,如果开发人员不在公司或者电脑旁,测试等部门的同事要打包测试,那么测试部门就没得相对应的包用;
二、因为是手动打出来的包,对Android端的开发人员的专业技能、开发经验、对我们的项目的熟悉程度要求较高,而且容易出错,工作量增加,过程也比较繁琐。
为了解决上述问题以及响应产品部、QA部等部门的需求,经过大家讨论后需求如下:
1、自动打包需求
按jenkins任务配置,在设定的时间点执行每日打包任务。
拉取指定的开发分支的代码,然后执行自动打包脚本,提供相应的下载地址。
2、手动打包需求
jenkins任务可以设定tag或分支,打包脚本按照jenkins设定的参数执行打包脚本。
二、需求分析:
综合上述需求以及结合当前实际情况,分析如下:
1、部署环境
因为当前我们是在准生产环境开发的、测试的部门也是在准生产环境进行测试的,所以当前请运维部门的同事先做准生产环境,后续如果增加开发、测试环境,再增加相对应的部署环境,生产上线的包,因为APP是要到阿里加固以及重新签名的,所以生产当前运维部的同事暂时不用考虑该环境问题。
2、服务端留存版本
依据jenkins的任务配置,当前服务端保留三个版本:
(1)设定的时间点执行每日打包的版本,
(2)设定tag打出来的版本,
(3)设定分支打出来的版本。
建议每个版本保留一周时间,然后服务端自动删掉。
3、下载地址
因为我们是用jenkins构建的,jenkins对任务的产出物提供有相应的下载地址,所以运维部得提供登录jenkins以及在jenkins下载该产出物的权限。
三、软件环境配置:
一、部署机器
1、ip: 10.255.12.10
2、端口:jenkins 默认端口
3、硬盘存储要求:30G
4、CPU:1核
5、内存:4G
6、机器系统:Linux
二,插件版本要求
软件工具 |
版本编号 |
版本说明 |
|
---|---|---|---|
Jenkins | 待定 |
| |
Java_JDK | 1.8 | 一定要这个版本 | |
Gradle | 2.1.0 | 建议 | |
Android_SDK | 23 | 后期会更新为高版本 | |
git | 2.4.6 | 当前服务端用该版本 |
四、环境部署步骤:
一、Jenkins简介
Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。Jenkins 的前身是Hudson是一个可扩展的持续集成引擎。
Jenkins安装与配置
端口问题:在安装的过程中可能会出现报端口错误的问题,请修改为9090。
安装页面的系统级别的的密码问题,请在机器本地一定要找到对应的文件,简单的复制、粘贴当然jenkins似乎不认。
编码问题:进入jenkins系统管理页面,会出现如图提示,可修改tomcat的server.xml配置,在Connector 标签添加上 URIEncoding="UTF-8" 。
二、JDK安装
1、先从网上下载jdk(jdk-8u1-linux-i586.rpm),下载地址:http://www.oracle.com/technetwork/Java/javase/downloads/jdk-7u1-download-513651.html,下载后放在/home目录中,当然其它地方也行。
2、进入安装目录
#cd /home
#cp jdk-7u1-linux-i586.rpm /usr/local
#cd /usr/local
给所有用户添加可执行的权限
#rpm -ivh jdk-7u1-linux-i586.rpm
安装过程如图所示:
3、设置环境变量
#vi /etc/profile
打开后,在文档最下方加上以下环境变量配置代码:
export JAVA_HOME=/usr/java/javajdk1.7.0_01
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
注意:export PATH=$JAVA_HOME/bin:$PATH,注意将$PATH放到最后。以免造成新旧版本问题。
4、检查JDK是否安装成功。
#java -version
如果看到JVM版本及相关信息,即安装成功!
如图:
三、下载Anndroid SDK
下载地址:https://developer.android.com/studio/index.html
然后更新sdk
#tools/android update sdk --no-ui
四、配置插件
1、添加git,gradle,lint
2、jenkins环境配置
根据下图把JDK、AndroidSDK、git、gradle环境变量一一添加进去。
五、创建执行任务
一、创建任务,如下图所示:
二、添加项目描叙及参数配置
三、拉取服务端代码
四、添加脚本
原脚本如下所示:
五、保存构建并应用
六、 创建上传到下载平台任务
创建上传到下载平台任务同本文创建构建任务一样,但是要注意的是在执行前面任务后接着构执行任务。
构建上传到下载平台的Linux脚本:
#!/bin/bash
#### upload apk ####
curl -X "POST" "http://api.fir.im/apps" -H "Content-Type: application/json" -d "{\"type\":\"android\", \"bundle_id\":\"com.haier.hairy\", \"api_token\":\"987daaff2f7cc0dce316349e05ffa879\"}" > /opt/key
KEY=`awk -F '"' '{print $34}' /opt/key`
TOKEN=`awk -F '"' '{print $38}' /opt/key`
BUILD=`awk 'NR==26 {print $2}' /opt/apache-tomcat-9.0.0.M10/webapps/jenkins/jobs/Android-App1/workspace/Hairy/build.gradle`
VERSION=`cat /opt/apache-tomcat-9.0.0.M10/webapps/jenkins/jobs/Android-App1/workspace/Hairy/build.gradle | grep versionName|awk -F '"' '{print $2}'`
curl -F "key=${KEY}" -F "token=${TOKEN}" -F "file=@/opt/apache-tomcat-9.0.0.M10/webapps/jenkins/jobs/Android-App1/workspace/Hairy/build/outputs/apk/Hairy-debug.apk" -F "x:name=海融易" -F "x:version=${VERSION}" -F "x:build=${BUILD}" -F "x:release_type=" -F"x:changelog=" http://upload.qiniu.com
rm -rf /opt/key