基于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的Android自动化打包分享

通过指令启动tomcat,然后打开 http://localhost:8080/jenkins/, 进入jenkins管理页面。
基于Jenkins的Android自动化打包分享

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

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

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

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。

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

系统管理-全局工具配置

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

首先你本地或者服务器上要安装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本地环境。
基于Jenkins的Android自动化打包分享

系统管理-系统设置

系统设置,就是配置全局设置和路径,在这里,我们只需要配置android sdk的环境变量。
基于Jenkins的Android自动化打包分享

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

在jenkins管理页面,新建任务,输入一个任务名称,选择构建一个*风格的软件项目,点击确定。
基于Jenkins的Android自动化打包分享

创建项目成功的页面
基于Jenkins的Android自动化打包分享

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

General

源码管理

选择无或者git。如果选择git,需要添加项目的git地址,以及项目的分支,以及对项目管理权限的git账户信息。
基于Jenkins的Android自动化打包分享

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

构建触发器

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

构建

构建这块应该是比较重要的,构建可以通过gradle脚本,或者shell脚本等。如果是通过gradle脚本命令配置如下。
基于Jenkins的Android自动化打包分享

如果源码管理你选择的是无的话,就可以通过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 "[email protected]$apk_file" -F "uKey=fceccf48c73404982ba2e2af49fc43d3" \
-F "_api_key=daa2afcb08bdb21fcfd9645d6aa8c841" https://qiniu-storage.pgyer.com/apiv1/app/upload

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

构建后操作

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

如何上传到蒲公英

在管理插件页面,搜索上传蒲公英平台插架-Upload to pgyer,然后安装,安装之后你在构建后的操作会看到有Upload to payer with apiV1。
基于Jenkins的Android自动化打包分享

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

如何上传到fir.im

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

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

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

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

fir下载页面截图:
基于Jenkins的Android自动化打包分享

写在最后

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