前言
开发人员手动打包不仅浪费开发时间,打断开发思路,又不能及时给测试或者运营人员安装包,费力不讨好,你懂得,所有就有了自动化打包。大部分公司都配置的有打包平台,但有的朋友还不知道如何配置以及工作原理,本文就来分享下基于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 平台做演示。
通过指令启动tomcat,然后打开 http://localhost:8080/jenkins/, 进入jenkins管理页面。
第一次打开jenkins页面会给一个管理员用户,并且给出默认管理员密码。
如果你想修改管理员密码,执行下面命令。
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。
系统管理-全局工具配置
全局工具配置,既可以选择在线安装,也可以选择本地已经安装的,然后添加工具配置,建议后者,必经这些工具你在开发的时候也需要。
首先你本地或者服务器上要安装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本地环境。
系统管理-系统设置
系统设置,就是配置全局设置和路径,在这里,我们只需要配置android sdk的环境变量。
系统管理-新建项目-配置项目
在jenkins管理页面,新建任务,输入一个任务名称,选择构建一个自由风格的软件项目,点击确定。
创建项目成功的页面
项目上面的展示构建成功,构建失败,以及上次构建的时间信息等,这时候你点击右边的运行会提示打包失败,因为你还需要对项目进行配置,项目的配置主要分为General 源码管理,构建触发器,构建,构建后操作。点击项目名称,进入configure配置。
General
源码管理:
选择无或者git。如果选择git,需要添加项目的git地址,以及项目的分支,以及对项目管理权限的git账户信息。
选择无的话,可以通过shell脚本,执行进入本地checkout的项目,然后进行更新代码进行打包操作指令,前提是本地已经配置了git账号信息,下面在有介绍。
构建触发器
构建触发器常用的就是定时构建,例如每天的10点,触发自动构建,打一个新鲜出炉的新包。定时构建语法自行百度,在这不做探讨。
构建:
构建这块应该是比较重要的,构建可以通过gradle脚本,或者shell脚本等。如果是通过gradle脚本命令配置如下。
如果源码管理你选择的是无的话,就可以通过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
构建后操作
如果将安装包上传到第三方分发平台,不习惯脚本的方式的话,下面有更简单的方式,有可视页面,通过安装插件,填写信息即可。
如何上传到蒲公英
在管理插件页面,搜索上传蒲公英平台插架-Upload to pgyer,然后安装,安装之后你在构建后的操作会看到有Upload to payer with apiV1。
选择Upload to payer with apiV1填写你的蒲公英uKey、api_key、apk安装路径,这个插件详情使用,具体参考 https://www.pgyer.com/doc/view/plugin_github
如何上传到fir.im
由于开发者没有将插件上传到插件库里面,所以在插件管理里面搜索不到,因此fir的插件需要现在本地上传下,然后在使用。主要步骤如下:
1:下载插件,在系统管理-插件管理-高级-上传插件
2:安装插件
3:使用插件,配置-构建后操作-增加构建后操作步骤-Upload to fir.im
4:填写 API Token
具体参考 http://blog.fir.im/jenkins/
jenkins配置完之后,就可以运行任务了,这时候几分钟后你在你的蒲公英或者fir.im平台就能看到新的apk安装包。如果打包失败,可以去点击你的项目去Console Output看控制台输入,然后重新打包即可。蒲公英下载页面截图 :
fir下载页面截图:
写在最后
以上就是我对基于Jenkins的Android自动化打包操作步骤的分享。如有问题,评论探讨,谢谢!