标签: Travis

  • Travis CI更细致的配置

    Travis CI是一个很好的免费CI,和Github搭配也很合适,但是对于多Env的项目在具体的配置上有很多可以更细致处理的地方。

    第一个是coverage的检测,默认情况下一句简单的命令可以让它工作

    after_success:
      - ./gradlew cobertura coveralls

    但是这种情况,所有的Env都会上传测试覆盖率数据,虽然coveralls等平台会自己处理,但是还是希望能够节约时间,只上传一份。

    很多情况下我们都会配置每次代码更新就发布一个snapshot版本,对于多Env的情况,如果没有特殊处理,就会出现一次commit,发布多个版本的情况。

    Travis CI中有很多环境变量,有默认的,有和当前构建有关的,也有用户自己定义的,可以依靠这些变量做出判断,决定是否执行相关操作。

    比如在.travis.yml中添加

    after_success:
     - .travis/coverage.sh
     - .travis/deploy.sh

    然后对应的bash脚本中做判断

    #!/bin/bash
    
    if [[ $TRAVIS_PULL_REQUEST == 'false' && $TRAVIS_REPO_SLUG == 'varFamily/cocos-ui-libgdx' && $GDX_VERSION == '1.9.2' && $TRAVIS_BRANCH == 'master' ]];
    then
        echo 'Upload snapshot to maven central'
        ./gradlew uploadArchives
    fi

    条件是可以自己定义,我这里写的是针对发布snapshot的。pull request不发布,只有在主项目的主分支的对应Env才发布。

  • Travis CI使用Ubuntu trusty

    之前Travis CI支持的Ubuntu 12.X,一般使用还好,但是对于有UI的,需要xvfb的有时候会有点问题。

    现在直接支持Ubuntu Trusty了。使用方法

    sudo: required
    dist: trusty

    其他照旧。

  • 使用Travis CI的Env特性测试版本兼容性

    Libgdx一直没有官方的UI编辑器,而cocostudio作为编辑器的能力让人羡慕。

    有一个简单的办法就是使用cocostudio,导出项目,然后构建一个LIbgdx的runtime解析器,比如这个项目https://github.com/tianqiujie/cocostudio-ui-for-libgdx

    Libgdx有很多版本,如果能够长久保持一定版本的支持(比如最新版为1.9.2,可以考虑支持1.7.0及以上)。

    Travis提供了Env功能,可以配置多个环境变量,比如这里以版本为变量

    language: java
    
    jdk:
      - oraclejdk7
    
    env:
     - GDX_VERSION=1.9.2
     - GDX_VERSION=1.9.1
     - GDX_VERSION=1.9.0
     - GDX_VERSION=1.8.0
     - GDX_VERSION=1.7.0
    
    before_install:
     - chmod +x gradlew
    

    然后在Gradle配置中修改一下,改成先判断环境变量,如果没有就是用指定版本1.9.2,这样开发人员在本地不需要其他配置也可以让项目正常运行。

    ext {
        gdxVersion = System.env.GDX_VERSION != null ? System.env.GDX_VERSION : '1.9.2';
    }
    

    然后在Travis CI中的执行效果如下

    travis-ci-env