前言:
记得刚到这家公司时,看到打包还是由开发人员进行打包,然后在把APK发给测试,当时就觉得这是一个占用猿子们的时间,因为在前东家那边都在使用Jenkins自动打包的。其实作为程序员,他们也是喜欢偷懒的,如果可以把打包工作做到自动化,这样就可以解决占用开发人员打包的时间了,当时也提过使用Jenkins自动化打包,然后被拒了,可能是由于刚到这家公司的原因吧,也是可以理解为什么会拒绝的,就在上周,当再一次提起后,居然就答应了,好了,口水都吐完了。接下来开始介绍如何通过借助Jenkins这个平台,进行自动化打包部署。
接触一个新东西之前你总得知道它是什么,它能做什么吧,那什么是Jenkins呢,它能做什么呢。
Jenkins简介
Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时Jenkins能实现监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。Jenkins的前身是Hudson,是一个可扩展的持续集成引擎。ps:更详细的介绍请看官网 https://jenkins.io/
进入正题
这里用的环境是在Mac下面完成的,集成Jenkins有多种方式,这里讲解单独使用Jenkins集成的环境,
单独使用Jenkins,https://jenkins.io/先到官网上面下载一个pkg的安装包,或者是用指令直接安装,下载完pkg安装包后,然后直接打开安装就可以了,过程中全部选择继续或者同意,安装成功后就会自动启动Jenkins啦,是不是觉得很方便呢,
第一次会出现以下界面
这个界面的提示工作很到位啊,连到哪个路径下获取initialAdminPassword都告诉你了,好了,这个时候就到该路径下把initialAdminPassword生成的密码取出来后,输入就可以了,如果你不知道怎么进入该路径,有一个更简单的办法,下面告诉大家
当然啦,这个完整的路径你是无法进入的,因为secrets文件夹是没有权限,这个时候我们就进入到Home文件夹就好了,然后在把secrets文件拷贝到桌面或者其他地方,这样做事方便把initialAdminPassword取到,拷贝过程选择同意就可以了,
打开这个文件后,我们就可以看到一串由数字和字母组合而成的东西了,然后直接拷贝到刚才打开Jenkins的界面输入后点击Continue按钮,好了,我们离自动打包又近一步了,
这里可以选择安装插件,或者是安装Jenkins已经提供要安装的一些插件,这里我们选择Select plugins to install 就好了,因为我们只关心打包是否能用,其他一概不管,安装完成后会有这么一个界面展示在我们面前
填完后点击“Save and Finish”,至此,我们的第一步工作才算真正完成,
2.下面给大家介绍需要使用到的一些插件,不多说了,上来就是干
注意:列表中为主要插件,而Jenkins的插件是有依赖关系的,安装一个插件可能要先安装它依赖的插件,否则会安装失败。在可选插件勾选列表中的插件即可,依赖插件会自动下载,是不是很棒。
Git plugin
Gradle Plugin
Email Extension Plugin
description setter plugin
build-name-setter
user build vars plugin
Post-Build Script Plug-in
Branch API Plugin
SSH plugin
Scriptler
Dynamic Parameter Plug-in
Git Parameter Plug-In
Git Changelog
3.安装插件
点击管理插件进入到下一个页面
然后选到可选插件,在过滤那搜索框搜索我们所需要的插件,
等待安装完成后,可以马上重启,但是最后就等所有的插件都安装完了,在做重启吧,这样就可以省去很多时间,提高我们的效率。
完成之后,接下来就是配置环境的问题了,选到“Jenkins -- 系统管理 -- Global Tool Configuration”,有几个是我们需要安装的,如果没有就选择默认吧,
分别是JDK ,Git ,Gradle,路径都是你自己电脑上面安装的路径,Name可随便定义,不过还是建议起一眼就能看懂的
Gradle的路径,这个是在我电脑上面的路径,把这个配上就可以了。
配置好这些环境后,我们离自动打包又近一步了,接下来就可以新建一个项目进行测试了。
然后开始我们的一些打包配置
Git代码仓库管理配置
如果没有可以选择的用户名和密码,就点击旁边的add按钮,在里面添加用户名和密码,然后直接add保存就好了。
构建环境的选择,下面就直接粘贴图片了,
把Tasks里面的代码粘贴出来,方便拷贝
clean assemble${PRODUCT_FLAVORS}${BUILD_TYPE}
--stacktrace
--debug
想想如果打包编译完成后,直接在打包那边显示一个二维码出来,是不是觉得特别高大上,特别牛逼
,接下里就教大家去完成这个任务,其实这个也不难,因为Jenkins的插件已经帮我们做好了,我们只需要做些改动就可以了,首先我们需要下载一个插件“description setter plugin”然后做下面的配置,
dir='/Users/admin/data/jenkins/workspace/APP/xxx/app/build/outputs/apk'
domain='/Users/admin/data/jenkins/workspace/APP/xxx/app/build/outputs/apk'
uri=`ls $dir`
#type='0release'
#if [ "$#${BUILD_TYPE}" != "$type" ]; then
#curl -F "file=@$domain/$uri" -F "uKey=ukey" -F "_api_key=api_key" http://www.pgyer.com/apiv1/app/upload
#fi
RESULT=$(curl -F "file=@$domain/$uri" -F "uKey=ukey" -F "_api_key=api_key" http://www.pgyer.com/apiv1/app/upload)
appQRCodeURL=$(echo "$RESULT" | sed "s/.*\"appQRCodeURL\":\([^,}]*\).*/\1/g")
merchantUrl=$(echo $appQRCodeURL | sed 's:\\\/:\/:g')
echo Desc: $merchantUrl
Set build description 的代码
^Desc: (.*)
<img src=\1>
然后点击保存,
接下来就是等待结果的时候,哈哈,激动人心的时刻到了
至此,我们的整个Jenkins自动化打包工作就已经完成啦。
PS:编译Android项目的过程,可能会出现查找local.profile文件的问题,然后我们需要在Jenkins -- 系统管理 -- 系统设置里面找到Environment variables,然后设置一下ANDROID_HOME就可以拉。