gitlab+jenkins自动化打包APK
前置条件:
环境搭建,jenkins需要的插件看这里:
配置思路:
step1:
搭建sdk,gradle运行环境,参照:
CentOS7下安装安装android sdk & gradle
step2:
存在1个android项目(可以先自己创建一个helloworld工程,也可以用git clone一个项目至本地)
step3:
确认buildTypes,就是有几个测试环境,这需要和具体的开发沟通好
step4:
测试打包环境可用:
首先cd到项目的app目录下
git克隆项目目录/trunk/5iwork/android/app
使用gradle clean命令清理一下环境
gradle clean
看到Successful的字样就成功了(这里我忘记截图)
step5:
使用gradle assmbleproRelease打包,打包成功,如图所示:
gradle assmbleproRelease

step6:
在app/build/outputs/文件下找到刚才生成的apk文件
运行pwd命令,记录下apk的目录地址(配置shell打包脚本的时候要用):
项目所在目录/trunk/5iwork/android/app/build/outputs/apk/pro/release
step7:
构建打包shell脚本
复制下面的gradle打包脚本,改一改目录地址,用sh build.sh运行,可以生成apk文件进行下1步
step8:
配置jenkins构建apk
注意,如果以前有配置过其它项目打包,这里可以直接复制1个job

修改点:
1.替换git仓库地址
2.shell脚本项目目录地址,换为jenkins项目目录;生成apk的目录
step8:
构建py脚本,用来把apk文件上传到蒲公英,参照
注意要改3个点,如图所示:

做完这些,构建Job,验证配置的结果,如图所示,就well done了

其它:
gradle打包脚本
## !/bin/sh
## 项目名
##使配置文件生效,否则会报gradle:命令找不到
source /etc/profile TARGET_NAME="AppFrameWork"
APKPATH="build/outputs/apk"
MODELGRADLEPATH="app"
BUILDTYPE=${ENV} ##打包版本,开发给测试打包默认是release的
APKVERSION="release"
##debug版本下,apk无需混淆,可以多一些打印日志的操作。
##release版本下,文件混淆,隐藏日志打印 ## 当前目录
SORCEPATH=${WORKSPACE} ##gradle目录(model级)
GRADLEWORKPATH=${SORCEPATH}/${TARGET_NAME}/${MODELGRADLEPATH} ## apk文件的存放路径
EXPORTPATH=${SORCEPATH}/${TARGET_NAME}/${MODELGRADLEPATH}/${APKPATH} ##apk文件的存放路径
EXPORTPATHAPK=${EXPORTPATH}/${BUILDTYPE}/${APKVERSION}/${MODELGRADLEPATH}-${BUILDTYPE}-${APKVERSION}.apk ## 新的apk名
APKNAME="XXXXAPP" ## 更名后apk路径
EXPORTPATHNEWAPK=${SORCEPATH}/${APKNAME}.apk ##切换到gradle工作目录
cd ${GRADLEWORKPATH} echo -e "============First Build Clean============"
## 清理缓存
gradle clean echo -e "============Export APK============" ## 导出APK包
gradle assemble${BUILDTYPE}Release echo -e "============Export APK SUCCESS============" ## 将APK复制到指定目录
cp ${EXPORTPATHAPK} ${EXPORTPATHNEWAPK}
echo -e "============APK Name: ${EXPORTPATHAPK}============"
echo -e "============APK Enviroment: ${BUILDTYPE}============"
如果想顺利的完成自动化打包(安卓)首先需要:
熟悉Gradle脚本(可以看成是一门独立的语言的),理解Task的概念
参考资料:
Gradle 构建基础
Gradle 入门--只此一篇
Tips:
查看build.gradle中共有多少个task::$ gradle tasks
另外对于构造不同测试环境的apk可以参照:
Gradle之构建变体(BuildVariant)
gitlab+jenkins自动化打包APK的更多相关文章
- gitlab+jenkins自动化打包IOS-jenkins配置
实现的效果如图: 构建界面: 完成效果: 功能说明: 根据选择的代码分支,执行构建打包 构建成功后根据ipa/apk生成二维码,并可在历史构建列表中展示各个版本的二维码,通过手机扫描二维码可直接安装 ...
- Android Jenkins 自动化打包构建
前言 在测试app项目过程中,通常都是需要开发打测试包给到测试,但是无论是iOS还是Android的打包过程都是相当漫长的,频繁的回归测试需要频繁的打包,对于开发同学影响还是蛮大的.因此在这种情况下, ...
- iOS Jenkins 自动化打包构建
前言 在测试app项目过程中,通常都是需要开发打测试包给到测试,但是无论是iOS还是Android的打包过程都是相当漫长的,频繁的回归测试需要频繁的打包,对于开发同学影响还是蛮大的.因此在这种情况下, ...
- Jenkins自动化打包(Gitlab)并上传蒲公英
整个过程详见:https://www.jianshu.com/p/91e8f571fc2b 以下是遇到的问题及解决过程 一.安装homebrew(网速很慢很慢……被墙了) /usr/bin/ruby ...
- gitlab+jenkins=自动化构建
jenkins:运维持续集成工具,靠着丰富的插件挑大梁. gitlab:git代码管理仓库web版,功能强大且丰富. 本文是记录自己工作中从搭建到使用~ 前提是会点git~可以去廖老师的网站学习:ww ...
- Jenkins自动化打包配置
具体流程不细讲,教程很多 * 环境配置: * xmapp安装 * Jenkins.war丢到Tomcat目录中,配置Jenkins * 宿主机安装jdk,gradle,配置环境变量(在Jenkins的 ...
- iOS自动化探索(九)使用Jenkins自动化打包并发布iOS App
继前一篇: Mac环境下安装Jenkins Jenkins安装好后, 我们试着创建一个iOS自动打包并发布的任务 iOS App构建必须在MAC上面使用xcode进行,所以我们要安装下xcode集成插 ...
- gradle自动化打包apk
前堤是要在安卓项目中配置好gradle.build脚本 ## !/bin/sh ## 项目名 ##使配置文件生效,否则会报gradle:命令找不到 source /etc/profile TARGET ...
- jenkins自动化打包部署
请参考: http://m.blog.csdn.net/article/details?id=50518959 1.启动 jenkins.war ,打开首页 192.168.158.129:8080 ...
随机推荐
- 红黑树插入操作---以JDK 源码为例
红黑树遵循的条件: 1.根节点为黑色. 2.外部节点(叶子节点)为黑色. 3.红色节点的孩子节点为黑色.(由此,红色节点的父节点也必为黑色) 4.从根节点到任一外部节点的路径上,黑节点的数量相同. 节 ...
- SpringBoot 创建 console程序
1.在pom中添加依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...
- [Python3] 020 借函数,谈一谈变量的作用域
目录 1. 概述 2. 分类 3. 变量的作用范围 少废话,上例子 4. 将局部变量提升为全局变量 少废话,上例子 5. 内建函数 globals() 与 locals() 少废话,上例子 6. 邪恶 ...
- 洛谷 - P4008 - 文本编辑器 - 无旋Treap
https://www.luogu.org/problem/P4008 无旋Treap也可以维护序列. 千万要注意要先判断p节点存在才进行Show操作,不然输出一个'\0'(或者RecBin里面的东西 ...
- Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search)
原文:Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...
- HTML创建链接框
使用CSS样式创建一个漂亮的链接框吧 <!DOCTYPE html> <html> <head> <style> a:link,a:visited { ...
- org.hibernate.hql.ast.QuerySyntaxException: tb_voteoption is not mapped [from tb_voteoption where voteID=?]
转自:https://www.cnblogs.com/albert1017/archive/2012/08/25/2656873.html org.hibernate.hql.ast.QuerySyn ...
- [转]Oracle 11g 基于CentOS7静默安装教程(无图形界面,远程安装) --有部份地方有问题
Oracle 11g 基于CentOS7静默安装教程(无图形界面,远程安装) [转载]原文地址:http://canonind.blog.51cto.com/8239025/1883066 一.安装前 ...
- openstack stein部署手册 9. neutron
# 安装程序包 yum -y install openstack-neutron-linuxbridge ebtables ipset # 变更配置文件 mv /etc/neutron/neutron ...
- 网络拓扑_配置hybrid端口
目的:实现不同VLAN间的PC不可互访, 但不同VLAN的PC均可以访问服务器. 例: VLAN5与VLAN10的PC不可以互通,但它们均可与服务器VLAN50互通. 拓扑图: