2015-12-21 87 views
1

我正在构建脚本作为我的特拉维斯生成过程的一部分:摇篮任务失败,但特拉维斯建还通过

sudo: false 
env: 
    global: 
language: android 
jdk: 
- oraclejdk8 
android: 
    components: 
    ... 
before_install: 
    ... 
script: 
- ./scripts/build.sh 

我跑了一些摇篮任务build.sh脚本的一部分:

... 
./gradlew clean assembleDebug testDebug -PdisablePreDex 
... 

testDebug是因为不通过的测试失败:

2 tests completed, 1 failed 
:MyApp:testDebugUnitTest FAILED 
FAILURE: Build failed with an exception. 
* What went wrong: 
Execution failed for task ':MyApp:testDebugUnitTest'. 
> There were failing tests. See the report at: file:///home/travis/build.../build/reports/tests/debug/index.html 
* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

的问题是,特拉维斯构建仍然是成功的。我认为任何失败的Gradle任务都会导致Travis构建失败。我想这不是这种情况。我如何确保任何失败的Gradle任务都无法通过Travis构建?

[更新]

如果我直接将命令的gradle进入travis.yml文件,然后一切工作像它应该。

sudo: false 
env: 
    global: 
language: android 
jdk: 
- oraclejdk8 
android: 
    components: 
    ...  
before_install: 
    ... 
script: ./gradlew clean assembleDebug testDebug -PdisablePreDex 

回答

3

问题是我没有通过Gradle行的退出码从我的脚本中传回Travis。

当我检查shell脚本退出码并传回给特拉维斯一切都很好:

... 
./gradlew clean assembleDebug testDebug -PdisablePreDex 
if [ $? != 0 ] 
then 
exit $? 
fi 

... # continue doing other stuff