Jenkins+Tomcat + Gradle + Tinker + Walle + 360加固 + fir.im 持续集成,自动构建
来源:互联网 发布:seo超级外链工具 编辑:程序博客网 时间:2024/06/06 12:38
先介绍一下为什么要用这么一大堆东西。。。。
- 阶段一 开发了一个简单的app
- 每次打包只需要./gradlew assembleRelease,然后等待几分钟,就可以得到一个安装包。
- 使用360加固助手进行加固
- 然后将安装包上传到fir.im
- 然后通知测试安装测试
- 阶段二 为了更好的用户体验,使用了热修复tinker
- ./gradlew assembleRelease打包
- 生成的安装包上传到360官网进行加固,然后下载加固后未签名的jg.apk
- 对jg.apk进行对齐,得到zip.apk
- 对zip.apk进行签名
- 检查是否采用了V2签名
- 使用walle进行多渠道分包
- 上传到fir.im
- 通知测试人员
- 阶段三
- …
- …
- …
通过上面的对比,阶段一需要4步完成一次打包测试流程,阶段二则需要12步来完成一次打包测试流程,阶段二都是用各种命令来完成,一方面比较繁琐,另一方面也容易出错,还有可能的阶段三、阶段四。。
说了一堆废话,但是我们都能感觉到好麻烦,为什么打个包这么繁琐。。。有没有什么方法能够更优雅一些?
有,答案就在Jenkins
接下来就让我们用Jenkins将繁琐的流程统统解决掉
关于Tinker,Walle,360加固的可以查看下面两个链接:
Tinker使用过程及注意点(1)-环境搭建及简单使用
Tinker使用过程及注意点(2)-360加固及多渠道分包
Jenkins环境搭建
- Apache Tomcat
- 访问Tomcat,然后通过Download下载
- 将下载的包解压到~/Library/目录下,然后命名为Tomcat
- 启动Tomcat 打开终端,切换到Tomcat/bin目录下,然后输入:./startup.sh 回车,就可以启动我们的Tomcat了
- 打开浏览器输入http://localhost:8080/,如果出现一只猫,则证明配置成功
- 关闭Tomcat,在bin目录下,输入:./shutdown.sh 回车,即可关闭Tomcat
- 参考
- 访问Tomcat,然后通过Download下载
- Jenkins
- Jenkins官网,点击Download选择自己的环境下载
- 将下载的Jenkins.war包直接放到tomcat下的webapps目录
- 启动tomcat
- 然后打开http://localhost:8080/jenkins
- 然后就是一系列的安装过程,默认即可。。。加载的一些插件可以根据自己的需要选择,或者选择推荐的插件安装
- 可能遇到的问题:打开http://localhost:8080/jenkins报404错误,可能tomcat没启动,或者下载的Jenkins.war是坏的,重新下载即可
创建Jenkins项目
填写项目名称,选择构建一个自由风格的软件项目,点击ok
General
填写一下项目的描述信息即可源码管理
- 如果是Git上的项目,勾选Git,然后在Repository URL填写项目的git url
- 如果是公共仓库则不需要进行其它操作,如果是私有仓库,需要点击Add添加帐号密码,并将node替换成添加的帐号密码
构建器触发
上面H/15 * * * * 表示每15分钟检查一次
定时检查的配置,JenKins给出的注释:
Examples:# every fifteen minutes (perhaps at :07, :22, :37, :52)H/15 * * * *# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)H(0-29)/10 * * * *# once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday.45 9-16/2 * * 1-5# once in every two hours slot between 9 AM and 5 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)H H(9-16)/2 * * 1-5# once a day on the 1st and 15th of every month except DecemberH H 1,15 1-11 *
构建环境
构建
- 点击增加构建步骤,选择Invoke Gradle script
- 勾选Use Gradle Wrapper,选择Make gradle executable
- 点击增加构建步骤,选择Invoke Gradle script
以上步骤就可以实现Jenkins的自动构建了。
接下来我们还可以设置以下功能
构建成功后自动上传到fir.im
- fir.im Jenkins 插件使用方法
- 下载fir.im插件
- 安装插件参考:fir.im Jenkins 插件使用方法
- 进入 Jenkins 管理界面后,点击左侧进入 系统管理
- 然后找到 管理插件 并点击进入
- 进入插件管理后,点击 高级 选项卡
- 然后在页面找到 上传插件,选择已下载好的 fir.im jenkins 插件文件路径,并点击 上传 等待安装成功。
- 安装成功后,如果没有创建 Jenkins 项目,请先创建项目。如果需要配置已存在的项目,请进入在 配置 中找到 增加构建后操作步骤 ,并选择 Upload to fir.im 添加到 Jenkins 项目中。
- 添加成功后开始配置各种参数,如图显示:
- 配置插件
- fir.im Token(必填)
保存,然后构建后将会自动上传到fir.im
- fir.im Token(必填)
构建成功后给测试人员发邮件
- 全局配置
- 系统管理 -> 系统设置
- JenKins Location 中填写 JenkinsUrl和管理员邮件地址
- Extended E-mail Notification
关于step4的密码解释:qq邮箱-> 设置 -> 账户 - 邮件模版:
- JenKins Location 中填写 JenkinsUrl和管理员邮件地址
- 系统管理 -> 系统设置
Default Subject 安卓构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!Default Content <hr/>(本邮件是程序自动下发的,请勿回复!)<br/><hr/>项目名称:$PROJECT_NAME<br/><hr/>构建编号:$BUILD_NUMBER<br/><hr/>GIT COMMIT:${GIT_COMMIT}<br/><hr/>GIT URL:${GIT_URL}<br/><hr/>GIT BRANCH:${GIT_BRANCH}<br/><hr/>构建状态:$BUILD_STATUS<br/><hr/>触发原因:${CAUSE}<br/><hr/>构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/>构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/>变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>
-
-
- 邮件通知
- 邮件通知
-
全部设置完成后点击保存,完成全局的配置
- 接下来进行项目配置 回到项目 test -> 配置
- 增加构建后操作步骤 -> Editable Email Notification
- 都是一些默认设置
这里面的内容都是我们在全局中定义好的,如果不做更改,默认的邮件格式就是我们定义好的。 - 点击Advanced Settings
- 点击高级
然后保存,邮件的发送就配置好了。
- 增加构建后操作步骤 -> Editable Email Notification
Tinker+Walle+360加固的脚本实现
接下来就解决gradle中,如何解放双手,实现360加固和Walle多渠道分包的脚本实现
360加固
1.首先需要下载360的加固宝
2.然后将下载的文件解压
3.然后将解压的文件中的jiagu文件夹放到项目根目录
4.在jiagu文件夹中新建jiagu_360.sh文件
首先在jiagu_360.sh文件中定义一些用到的路径、帐号密码等。
然后写加固代码
echo "------ jiagu running! ------"java -jar ${BASE} -versionjava -jar ${BASE} -login ${NAME} ${PASSWORD}#java -jar ${BASE} -importsign ${KEY_PATH} ${KEY_PASSWORD} ${ALIAS} ${ALIAS_PASSWORD}#java -jar ${BASE} -showsign#java -jar ${BASE} -importmulpkg ${CHANNEL} #根据自身情况使用#java -jar ${BASE} -showmulpkg#java -jar ${BASE} -showconfigjava -jar ${BASE} -jiagu ${APK} ${DEST} #-autosignecho "------ jiagu finished! ------"
5.app的build.gradle中添加如下代码
afterEvaluate { android.applicationVariants.all { variant -> variant.assemble.doLast { if (variant.buildType.name.contains('release')) { def apkPath = variant.outputs.get(0).outputFile as File exec { ignoreExitValue true commandLine "sh", "../../jiagu/jiagu_360.sh", apkPath, apkPath.getParent() } } } }}
这样360加固就自动搞定了,你只需要.gradlew assembleRelease就会自动帮你打包并且加固。
接下来就是对加固的应用进行签名,多渠道什么的了。
对齐、签名
在加固的基础上,在sh文件中继续添加如下代码:
echo "------ output file start------"for file_a in ${DEST}/*; do temp_file=`basename $file_a` if [[ $temp_file == *"jiagu"*.apk ]];then JIAGU_PATH=${DEST}$temp_file echo "find it "${JIAGU_PATH} echo $temp_file break fi echo $temp_filedoneecho "------ output file finish ------"echo "------ zipalign running! ------"${SDK_PATH}/zipalign -v 4 ${JIAGU_PATH} ${ZIP_PATH}echo "------ zipalign finished! ------"echo "------ signer running! ------"${SDK_PATH}/apksigner sign --ks ${KEY_PATH} ${ZIP_PATH} <<EOF${KEY_PASSWORD}EOFecho "------ signer finished! ------"
Walle多渠道分包
1.首先我们需要两个jar包
关于jar包的获取,可以参考:
Tinker使用过程及注意点(2)-360加固及多渠道分包
2.在jiagu文件夹下新建walle文件夹,然后加入
CheckAndroidV2Signature.jar
walle-cli-all.jar
channel.txt
3.在sh文件中添加如下代码:
echo "------ check android v2 signature start ------"java -jar ${WALLE_PATH}/CheckAndroidV2Signature.jar ${ZIP_PATH}echo "------ check android v2 signature finish ------"echo "------ walle channel start ------"java -jar ${WALLE_PATH}/walle-cli-all.jar batch -f ${WALLE_PATH}/channel.txt ${ZIP_PATH} ${DEST}echo "------ walle channel finished ------"
如果你或者测试需要一个包?
只需要点一下立即构建,将自动完成
打包,
加固,
多分包,
上传fir.im,
通知相关人员。
可能的坑?
1.点击立即构建,可能某一次运行成功了,然后就一直失败。。。
解决办法:
构建 -> Invoke Gradle script -> Use Gradle Wrapper -> 高级
不知道为什么jenkins会莫名其秒的在Build File添加一个路径,导致报错,所以删除它,就没问题了。
2.Jenkins自动构建过程中,360加固报错,说文件损坏。
原因:未知。。。
解决办法:找到Jenkins的项目地址:一般在/Users/.Jenkins/workspace
然后将jiagu文件夹从本地拷贝过去,删除workspace目录下原有的jiagu文件夹。即可正常加固。
- Jenkins+Tomcat + Gradle + Tinker + Walle + 360加固 + fir.im 持续集成,自动构建
- Jenkins+GitLab+Gradle+fir.im持续集成安卓
- Jenkins+GitLab+fir.im 持续集成
- Mac下搭建 Jenkins+Github+蒲公英/fir.im 持续集成环境(iOS自动打包)
- Jenkins、Git、CocoaPods、Fir.im 实现 iOS 应用持续集成
- Jenkins+svn+gradle+fir搭了一个持续集成环境
- 实践Jenkins+Gradle实现Android自动化构建,并上传至fir.im
- Windows系统下基于jenkins+github+fir.im的Android项目持续化集成实例
- fir.im 持续集成技术实践
- fir.im 持续集成技术实践
- jenkins + maven + svn + tomcat 搭建自动构建,自动部署,持续集成环境
- Jenkins+gitHub+Xcode+自动上传fir.im
- Jenkins 持续集成构建
- Jenkins + xcode +Fir.im 自动构建项目 、打包ipa并上传
- 在OsX系统上使用Jenkins自动构建发布Unity3d的iOS版本到fir.im
- Jenkins + Xcode + Fir.im 自动构建项目,并打包ipa上传(MAC)
- Jenkins + xcode +Fir.im 自动构建项目 、打包ipa并上传
- 持续集成工具集之四 Jenkins+Maven+Git+Tomcat 项目构建和自动部署
- exception in initAndListen: 29 Data directory /data/db not found., terminating
- 【MyBatis学习01】宏观上把握MyBatis框架
- 背景,尺寸及显示的相关属性
- 添加一个桥设备——br_add_bridge(二)
- 【二叉树】后序遍历【Add to List 145. Binary Tree Postorder Traversal】
- Jenkins+Tomcat + Gradle + Tinker + Walle + 360加固 + fir.im 持续集成,自动构建
- Kettle生成0到10随机数
- jquery动态添加删除div 新添加的为什么删不掉
- gets()和scanf的区别
- 程序员接私活儿注意事项
- Servlet Jsp三天速成大纲
- Scala基本语法(四)
- NKOJ P2376【NOIP无压力模拟赛5】蜘蛛展览
- 洛谷P1373 小a和uim之大逃离