《Gradle For Android(五)github中最强的持续集成工具---Travis》
转载请注明来自傻小孩b_移动开发(http://www.jianshu.com/users/d388bcf9c4d3)喜欢的可以关注我,不定期总结文章!您的支持是我的动力哈!
Gradle For Android 导读
- Gradle For Android (一) 基础定义与依赖管理篇
- Gradle For Android(二) 多渠道打包与签名配置
- Gradle For Android(三)Gradle优化与灵活的使用技巧
- Gradle For Android(四)Gradle编译中神秘的混淆
首先,这里也是Gradle For Android系列最后一章文章了,在这里想感谢各位读者哈,的确有时候晚上回来就写文章花了不少时间。但是总觉得是一件特别有意义的事情,虽然有点懒没有很经常的更新~但是,笔者会继续用时间沉淀下去,让自己慢慢发光,抱着是金子一定会被人发现的信念,一步一步让自己成长起来!
前言
关于Travis
集成自动构建近几年比较火,大大地减少了程序猿在开发构建的时间。
当然,在目前公司比较流行是集成开源的基于java web的持续集成工具jenkins,并且提供了丰富的第三方插件。笔者公司就是使用jenkins,在开发过程中,我们开发人员只需要负责提交上传代码至svn(或git)服务器,jenkins可以根据代码版本号不同进行自动化构建,并且支持自动发布到蒲公英网,方便测试拿到最新的测试版本。
当然,今天要讲得主角是Travis,jenkins比较成熟,因此网上的搭建文档也不少,有兴趣的读者可以自己了解下~接下来将继续Travis之旅:
安装 and 配置
由于笔者是直接使用mac os进行安装配置Travis CI的,如果是windows用户,可以自己搜索下windows搭建ruby开发环境,例如传递门
(一)安装ruby
可以先通过命令检测当前是否已经安装了ruby
ruby -v
如果没有安装的开发者,可以参考我N年期记录的坑,有安装ruby教程 安装CocaoaPods遇到的坑
(二) 安装travis
gem install travis -v 1.8.0 --no-rdoc --no-ri
安装结束后,可以查下版本号检验是否已经安装完成
travis version
启用Travis CI 之旅
一、Travis CI的三步走
首先登陆travis-ci.org,这里说明下,Travis有分为开源项目版本与付费项目版本,付费版本域名是:travis-ci.com
。说白了就是免费的持续集成为了开源项目而生,这里我们是为了github来集成,果断选择免费~
待我们通过github账号授权登录到travis官方网站,在主页我们可以大概了解到持续集成只需要简单的三个步骤,如图所示:
简单说明下:
1、在travis中,将显示所有github上的项目,这时候我们需要打开需要持续集成的project
2、将.travis.yml配置文件放到project根目录中,规则后面说明
3、上传代码,开始集成
看到这三个步骤,是不是发现其实很简单?比较麻烦其实就是.travis.yml配置文件,不过也不担心,其实集成一个配置,需要不到30行规则就可以了,还有官方文档也说明的很详细,传递门
写我们的,travis.yml
(一)首先贴下,官方的案例,我直接注释说明。
language: android
android:
##########编译需要的组件###########
components:
# - platform-tools # Android 中 SDK TOOLS,编译必须
# - tools
# 这个应该也很熟悉,这里注意必须和你的gradle配置的相同,编译必须
- build-tools-19.1.0
# 编译的sdk版本,这里注意必须和你的gradle配置的相同,编译必须
- android-22
# 而外的组件,可选择
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository
- addon-google_apis-google-19
# 编译的系统架构镜像,可以选择X86 armeabi等架构,可选择
- sys-img-armeabi-v7a-android-22
- sys-img-x86-android-17
(二)部分字段说明
-
android : components 表示编译时组件,上面的官方案例都是组件说明,包括 platform-tools、build-tools、compileSdkVersion等组件
platform-tools build-tools-22.0.1 android-22 sys-img-armeabi-v7a-android-22 android-21 sys-img-armeabi-v7a-android-21 android-20 sys-img-armeabi-v7a-android-wear-20 android-19 sys-img-armeabi-v7a-android-19 android-18 sys-img-armeabi-v7a-android-18 android-17 sys-img-armeabi-v7a-android-17 android-16 sys-img-armeabi-v7a-android-16 android-15 sys-img-armeabi-v7a-android-15 android-10 extra-android-support extra-google-google_play_services extra-google-m2repository extra-android-m2repository
licenses 表示添加指定的授权证书,在编译的时候
jdk 表示使用的jdk版本,例如1.8 : oraclejdk8
sudo 表示是否开启基于容器的Travis CI任务,可以让编译效率更高
-
cache: 是否让你的任务支持缓存,一般我们指定.gradle目录下的缓存,如下
cache: directories: - "$HOME/.gradle"
-
before_install 表示编译器需要哪些依赖包的安装,例如我们可以更新最新的组件
before_install: "sudo apt-get update"
-
script 表示执行一些脚本,例如我们自动构建release的时候,要通过gradlew执行脚本
script: - "./gradlew assembleRelease"
deploy 表示部署,这个常用于自动构建打包后要发送到指定平台,要根据不同的平台进行配置。
(三)自动化构建配置举例
这个案例只是配置github可以持续集成构建,不包含部署第三方平台。当然前提你要打开了travis的集成开关,然后一定要记得push 项目的gradlew文件,别忽略了!
language: android
android:
components:
- tools
- build-tools-24.0.1
- android-24
- extra-android-m2repository
jdk: oraclejdk8
sudo: false
cache:
directories:
- "$HOME/.gradle"
before_install:
- chmod +x gradlew
script:
- "./gradlew assembleRelease"
二、自动化构建前面证书安全管理
在前面的章节中,我记得有提及到,在自动化构建的时候,我们不应该将签名文件的敏感信息,明文的形式填写在Gradle配置中。尽可能的在持续化构建工具中进行设置进行编译,本地的话则是建议放在gradle.properties,具体可以看下---。这里travis提供了可设置构建时设置环境变量,具体在travis CI控制台可以设置,通过点击项目名称 -> Settings -> Environment Variables中设置环境变量,如图所示:
最后可以通过System.getenv()获得这些参数,例如:
releaseConfig {
storeFile file("../agradle.jks")
storePassword project.hasProperty("KEY_STORE_PASSWORD") ? KEYSTORE_PASS : System.getenv("KEY_STORE_PASSWORD")
keyAlias project.hasProperty("KEY_ALIAS") ? ALIAS_NAME : System.getenv("KEY_ALIAS")
keyPassword project.hasProperty("KEY_PASSWORD") ? ALIAS_PASS : System.getenv("KEY_PASSWORD")
}
三、自动配置发布github or fir.im
(一)发布github
发布github有两种配置方式,一种通过账号密码,一种通过accessToken。当然,travis.yml是需要明文push到github的,所以直接排除第一个。然后简单说下具体怎么实现。
1、获取github的AccessToken
登录我们自己的github,然后点击头像进入setting,你可以发现右侧的Developer settings 有personal access tokens的选择,如图所示:
选择generate new token
选择这种权限的token后,便能生成一串token,如图所示:
2、执行setup,加密access token,记得在当前文件执行
travis setup releases
3、最后Travis CI会自动在.travis.yml填入加密后的accesstoken
4、最后pust代码即可,贴上配置代码
deploy:
provider: releases
api_key:
secure: //保密~
file: app/build/sample-debug.apk
skip_cleanup: true
on:
tags: false
all_branches: true
5、编译结果
(二)发布fir.im
这个笔者暂时没有进行测试,不过我举例别人的成功案例~
before_install:
- gem install fir-cli
after_deploy:
- fir p app/build/outputs/apk/app-release.apk -T $FIR_TOKEN -c "`git cat-file tag $TRAVIS_TAG`"
FIR_TOKEN指的是fir.im的用户的API Token
四、总结
技术很快,如果一个开发者能够掌握所有最新的技术,那是不可能、也是不科学的。人的精力有限,但是我们依然用有限的时间付出最大的力量的积累总结。总之,记录就是笔者的总结,当然也希望能够把总结分享给其他读者。希望对你们有帮助哈。
也欢迎加入开发交流群哈,详情看个人简介~
傻小孩b
mark共勉,写给在成长路上奋斗的你