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才发布。
