美文网首页技术Android知识Android
Gradle For Android(五)github中最强的

Gradle For Android(五)github中最强的

作者: DevSiven | 来源:发表于2016-11-03 20:20 被阅读803次

    《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共勉,写给在成长路上奋斗的你

    相关文章

      网友评论

      本文标题:Gradle For Android(五)github中最强的

      本文链接:https://www.haomeiwen.com/subject/canbuttx.html