基于Jenkins的Android自动化打包分享

前言

开发人员手动打包不仅浪费开发时间,打断开发思路,又不能及时给测试或者运营人员安装包,费力不讨好,你懂得,所有就有了自动化打包。大部分公司都配置的有打包平台,但有的朋友还不知道如何配置以及工作原理,本文就来分享下基于Jenkins的Android自动化打包。

为什么用Jekins自动化打包

为什么用jenkins打包,以及jenkins优点,官网 https://jenkins.io/ 自行查看。

怎样使Jekins自动化打Android开发包

jenkins下载与安装

jenkins安装分两种,一种是下载jenkins安装包,本地安装jenkins,但是这样本地会多一个用户名为jenkins的用户,另一种是下载jenkins的war包。建议直接下载jenkins的war包,然后将jenkins的war包放在tomcat的webapps目录下,然后在本地访问jenkins的管理页面,同样适用于服务器。具体如何搭建服务器,可以参考这篇文章,Android开发者如何搭建服务器

tomcat进入 https://tomcat.apache.org/ 官网,下载最新的 tomcat 安装包并且安装。

进入jenkins 的官网 https://jenkins.io/ , 根据你搭建平台的不同,下载 jenkins war 包 ,我这里用 mac 平台做演示。

jenkins下载页面.png

通过指令启动tomcat,然后打开 http://localhost:8080/jenkins/, 进入jenkins管理页面。

启动tomcat.png

第一次打开jenkins页面会给一个管理员用户,并且给出默认管理员密码。

image.png

如果你想修改管理员密码,执行下面命令。

cd /Users/fengyongge/.jenkins/secrets
open initialAdminPassword

然后在这个文件里面添加新的管理员密码。

jenkins配置

jenkins配置android的自动化打包,主要分为插件的安装,全局工具配置,环境变量的配置3部分。

系统管理-管理插件

插件的安装取决于你打包时候各个功能的需求,如果只是简单的打包,需要的插件并不多,以下介绍几种插件。

注解 解释
Android Lint Plugin 允许Jenkins直接调用Gradle构建脚本
Gradle Plugin 允许Jenkins直接调用Gradle构建脚本
Git plugin 允许Jenkins直接调用Gradle构建脚本
Upload to pgyer 上传APK、IPA文件到pgyer(蒲公英)
Publish Over SSH 通过ssh发送构建工件
SSH plugin 使用ssh协议远程执行shell命令。
…… ……

然后通过搜索过滤你想要安装的插件,然后restart jenkins。

插件管理页面.png

系统管理-全局工具配置

全局工具配置,既可以选择在线安装,也可以选择本地已经安装的,然后添加工具配置,建议后者,必经这些工具你在开发的时候也需要。

首先你本地或者服务器上要安装jdk,gradle,sdk,然后去配置环境变量,最后添加到jenkins的工具配置,笔者的配置。

#jdk 
JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home"
export PATH="$JAVA_HOME/bin:$PATH:."
#gradle 
export GRADLE_HOME=/Applications/Android\ Studio.app/Contents/gradle/gradle-4.6   
export PATH=$GRADLE_HOME/bin:$PATH

环境变量配置后,可以去验证是否配置成功,如果配置成功后,可以根据你配置的环境变量的变量名去验证。

echo $JAVA_HOME
/Library/java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/bin
echo $GRADLE_HOME
/Applications/Android Studio.app/Contents/gradle/gradle-4.6

mac上gradle的环境配置有可能遇到坑,可以参考这篇文章Mac上配置gradle环境。除此之外,如果你的版本控制工具如果是git的话,需要本地安装git,然后配置git环境变量,然后在jenksin的系统管理-全局工具配置配置Jdk,Git,Gradle本地环境。

全局工具配置.png

系统管理-系统设置

系统设置,就是配置全局设置和路径,在这里,我们只需要配置android sdk的环境变量。


android sdk环境变量配置.png

系统管理-新建项目-配置项目

在jenkins管理页面,新建任务,输入一个任务名称,选择构建一个自由风格的软件项目,点击确定。


新建项目.png

创建项目成功的页面


demo项目.png

项目上面的展示构建成功,构建失败,以及上次构建的时间信息等,这时候你点击右边的运行会提示打包失败,因为你还需要对项目进行配置,项目的配置主要分为General 源码管理,构建触发器,构建,构建后操作。点击项目名称,进入configure配置。


项目配置.png
General
源码管理:

选择无或者git。如果选择git,需要添加项目的git地址,以及项目的分支,以及对项目管理权限的git账户信息。


image.png

选择无的话,可以通过shell脚本,执行进入本地checkout的项目,然后进行更新代码进行打包操作指令,前提是本地已经配置了git账号信息,下面在有介绍。

构建触发器

构建触发器常用的就是定时构建,例如每天的10点,触发自动构建,打一个新鲜出炉的新包。定时构建语法自行百度,在这不做探讨。


image.png
构建:

构建这块应该是比较重要的,构建可以通过gradle脚本,或者shell脚本等。如果是通过gradle脚本命令配置如下。


image.png

如果源码管理你选择的是无的话,就可以通过shell脚本,来进行更新代码,切换分支,执行打包,指令如下。笔者使用的都是shell脚本,也推荐这种做法。

cd /Users/fengyongge/git/component
source /etc/profile
git checkout master
git pull
/Applications/Android\ Studio.app/Contents/gradle/gradle-4.6/bin/gradle -p 
/Users/fengyongge/git/component --stacktrace --info clean assembleRelease

下面是通过shell脚本上传到第三方分发平台,除了shell脚本外,还可以使用插件,构建后的操作会做介绍。

cd /Users/fengyongge/git/component
apk_file=`find . -name '*.apk' | grep -v 'unaligned' | tail -n 1`

echo $apk_file
echo "curl -F "file=$apk_file" -F "uKey=fceccf48c73404982ba2e2af49fc43d3" \
-F "_api_key=daa2afcb08bdb21fcfd9645d6aa8c841" https://qiniu-storage.pgyer.com/apiv1/app/upload"

curl -F "file=@$apk_file" -F "uKey=fceccf48c73404982ba2e2af49fc43d3" \
-F "_api_key=daa2afcb08bdb21fcfd9645d6aa8c841" https://qiniu-storage.pgyer.com/apiv1/app/upload
image.png
构建后操作

如果将安装包上传到第三方分发平台,不习惯脚本的方式的话,下面有更简单的方式,有可视页面,通过安装插件,填写信息即可。

如何上传到蒲公英

在管理插件页面,搜索上传蒲公英平台插架-Upload to pgyer,然后安装,安装之后你在构建后的操作会看到有Upload to payer with apiV1。


image.png

选择Upload to payer with apiV1填写你的蒲公英uKey、api_key、apk安装路径,这个插件详情使用,具体参考 https://www.pgyer.com/doc/view/plugin_github

image.png

如何上传到fir.im

由于开发者没有将插件上传到插件库里面,所以在插件管理里面搜索不到,因此fir的插件需要现在本地上传下,然后在使用。主要步骤如下:
1:下载插件,在系统管理-插件管理-高级-上传插件
2:安装插件
3:使用插件,配置-构建后操作-增加构建后操作步骤-Upload to fir.im
4:填写 API Token
具体参考 http://blog.fir.im/jenkins/

image.png

jenkins配置完之后,就可以运行任务了,这时候几分钟后你在你的蒲公英或者fir.im平台就能看到新的apk安装包。如果打包失败,可以去点击你的项目去Console Output看控制台输入,然后重新打包即可。蒲公英下载页面截图 :

image.png

fir下载页面截图:


image.png

写在最后

以上就是我对基于Jenkins的Android自动化打包操作步骤的分享。如有问题,评论探讨,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345