Gradle For Android(五)github中最强的持续集成工具---Travis

《Gradle For Android(五)github中最强的持续集成工具---Travis》
转载请注明来自傻小孩b_移动开发http://www.jianshu.com/users/d388bcf9c4d3)喜欢的可以关注我,不定期总结文章!您的支持是我的动力哈!

Gradle For Android 导读

首先,这里也是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官方网站,在主页我们可以大概了解到持续集成只需要简单的三个步骤,如图所示:

![Uploading travis_2_006493.png . . .]

简单说明下

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中设置环境变量,如图所示:

travis_2.png

最后可以通过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的选择,如图所示:

travis_3.png

选择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、编译结果

travis_5.png
travis_6.png
(二)发布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共勉,写给在成长路上奋斗的你

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容