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 ...
随机推荐
- SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思 sql server 2005 2008
原文:http://www.cnblogs.com/ForFreeDom/archive/2009/10/16/1584680.html 在sqlserver2005或SQL2008数据库项目中,创建 ...
- oracle--groupby分组学习
使用group by分组 在多行函数中不能直接使用普通字段,除非group by 在多行函数中不能直接使用单行函数,除非group by group by学习: ---1.使用group by进行数据 ...
- java_第一年_JDBC(7)
Commons-dbutils是一个开源的JDBC工具类库,对JDBC进行封装,简化编码的工作量,包含的API: org.apache.commons.dbutils.QueryRunner org. ...
- Greg and Array CodeForces 296C 差分数组
Greg and Array CodeForces 296C 差分数组 题意 是说有n个数,m种操作,这m种操作就是让一段区间内的数增加或则减少,然后有k种控制,这k种控制是说让m种操作中的一段区域内 ...
- BZOJ 1878(离散化+线段树)
题面 传送门 分析 首先我们观察到区间范围较大,而区间个数较少,考虑离散化,将所有询问按照右端点进行排序 离散化之后研究区间颜色个数变化的规律 当我们处理到第a[i]个段时,设a[i]上一次出现的地方 ...
- eclipse 使用技巧、经验 (编码、格式化模板、字体)
版权声明:本文为博主原创文章,未经博主同意不得转载.安金龙 的博客. https://blog.csdn.net/smile0198/article/details/28697515 1.设置编码为U ...
- mybatis-plus&springboot
** 问题1:mybatis 读取不到 mapper映射文件. 如下: ** 如果引用 mybatis-plus 包 <dependency> <groupId>com.bao ...
- C# 委托和事件 实现窗体间的通信
例子 : 点击form1上的按钮打开form2窗口,在form2窗体中的文本框中输入一个值后,在点击form2窗体中按钮,在form2中的文本框中输入的值也会在form1中的文本框中出现. form1 ...
- 灵活的理解JavaScript中的this指向(一)
this是JavaScript中的关键字之一,在编写程序的时候经常会用到,正确的理解和使用关键字this尤为重要.首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确 ...
- SSH简单Demo
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3 ...