Android自动构建
Nov 30, 2015 · 1 minute read · Comments开发
Android自动构建发布实践
首先声明。
这主要不是讲教程,这是集成过程中遇到的坑!
这主要不是讲教程,这是集成过程中遇到的坑!
这主要不是讲教程,这是集成过程中遇到的坑!
重要的事情说三遍。
集成工具
- jenkins (CI)
- Git and GitLab(GitHub同理)
- Gradle (build 工具)
- fir (发布工具)
工具简单介绍一下,
jenkins是现在比较主流的CI,也正是因此,上面的插件丰富,涵盖面也很广,更为重要的是,非常容易安装和配置,自然是首选。
Git 版本管理工具,就不用了讲解了。jenkins同时支持svn。(还是建议大家早点转到git上)公司现在的版本管理使用的是gitlab,类似github(github的迷你版)。
Gradle是现任Android构建,很是强大。至于grade配置,网上教程很多也很杂乱,建议大家跟随谷歌原版[Gradle 用户指南]()
这里再推荐一篇,个人认为对Gradle解读很到位的一篇文章。[深入理解gradle]()
开始集成
安装jenkins。
如果你是mac或者Linux,可以直接通过shell安装(推荐 )
$ brew install jenkins
如果没有brew,先安装Homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
如果没有ruby… 请自行google。
启动 Jenkins
$ jenkins
访问 Jenkins
- 请在浏览器输入地址:
http://localhost:8080/
- 使用安装包安装后会自动打开,如果端口冲突那么请修改端口
defaults write /Library/Preferences/org.jenkins-ci httpPort xxxx
jenkins最基本的安装就完成了。然后,可以在浏览器输入地址查看一下。看到这样的画面,基本安装就完成了。
截图里包含两个,一个是通过web端浏览器访问得到的界面。另一个是shell的日志。
jenkins到此结束。开始使用jenkins,Android的构建之旅吧。
jenkins的插件安装
两种方式。这里以安装Git插件为例。
- 通过查询安装。
- 通过自行下载*.hpi , 然后通过高级安装。
选择系统管理,然后选择管理插件。
查询安装。
在插件管理界面,选择可选插件,然后在右边过滤器里筛选Git或GIT plugin
然后选择立刻安装。
自行下载*.hpi , 然后通过高级安装
然后选择上传。
遇到的坑
可以说刚开始我是一只使用第一种方法来安装插件的。结果失败率非常高。如果不自备梯子,失败率会更高!
折腾了很长时间,而且搞得自己心里憔悴。
所以建议大家通过自己去jenkins的官网或镜像来下载hpi文件自行安装需要的插件。
还有,自备梯子是一种好习惯。
需要安装的插件
- Git
- Gitlab
- Gitlab Hook (我一直安装不成功,所以自动push event 构建也还未成功)
- Gradle
- fir (官网有详尽的下载和安装教程)
到此为止,所有的环境都准备好了。终于可以开动了!
自动化构建实例
jenkins中新建一个项目,命名后,选择 构建一个自由风格的软件项目
。
项目名称。跳过
描述。跳过
… 各种跳过,直接进入源码管理。
源码管理
这里选的是Git,当然如果你只有现实svn的话,那就是你还没安装Git的插件,具体安装请看上文。
记住选择构建的分支。(这里是一个只含一个界面调试的项目,所以我直接用了master。建议,创建一个deploy发布或者debug这样的分支,确保每次构建都是可控的。)
注意到Credentials,这是身份验证。这里直接写了none,也就是说,没有直接验证身份。难道说,我的项目没加任何限制???
当然,不是啦。Git的项目,无论是Github还是自己搭建的Gitlab,大多数都是通过ssh验证的。
可以点击Credentials 后面的Add 。
这样保证jenkins部署的机器的ssh私钥在服务上。
构建触发器
这就是传说中的自动构建。直接上图讲解。
这里有三种事件触发构建。
- Build periodically 。 即定时触发,这里我写的是
H 10 * * *
,指的就是每天10点触发构建,也就是说,每天10天无论有没有新的代码部署,都会进行构建。
H 10 * * *
分 小时 天 月 年
// 五位分别指向轮询事件,这里H 和 0 差不多意思,就是不顾及 分,每天10天构建。
// * 指忽视
Build when a change is pushed to GitLab. GitLab CI Service UR… 。这是Gitlab的插件,是gitlab通过事件通知的形式发放。(我测试了很久,感觉这个插件时好时坏,不建议使用)
Poll SCM。 即轮询查询仓库中的代码是否有更新,如果有更新,则进行构建。没有更新,则忽视。这里写的
H/5 * * * *
,指每五分钟进行代码扫描。
H/5 指每五分钟。 这种写法指每这段时间进行轮询
构建
构建栏中,选增加构建步骤。选择Invoke Gradle script
,当然,如果没有这个选项,就是未安装Gradle插件,然后具体的参数。
熟悉Gradle的,很容易看明白,只是执行了了gradle clean build 指令而已。不熟悉的也没关系,我会单独再写一篇关于优化Gradle在安卓上面的部署的 ,以及Gradle使用。
构建后操作
我这里使用的是fir.im (做的还不错哦)。
选择增加构建后操作步奏,选择Upload to fir.im
。
Token 需要注册fir后生成。
IPA/APK Files ,是可选项。如果不填写,会直接从目录里找。如果填写了,则是会找到需要的目录。
其他的涉及到测试等方面。不是本文涉及的内容。
以上全部内容都是在自己mac上执行完成的。
接下来在Linux上部署。
到此构建基本完成。