Gradle 任务失败,但 Travis 构建仍然通过
Gradle task fails, but Travis build still passes
我是 运行 作为我的 Travis 构建过程一部分的构建脚本:
sudo: false
env:
global:
language: android
jdk:
- oraclejdk8
android:
components:
...
before_install:
...
script:
- ./scripts/build.sh
我运行一些Gradle任务作为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.
问题是 Travis 构建仍然成功。我认为任何失败的 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
问题是我没有将 Gradle 行的退出代码从我的脚本传回给 Travis。
一旦我检查了 shell 脚本退出代码并传回给 Travis,一切都很好:
...
./gradlew clean assembleDebug testDebug -PdisablePreDex
if [ $? != 0 ]
then
exit $?
fi
... # continue doing other stuff
我是 运行 作为我的 Travis 构建过程一部分的构建脚本:
sudo: false
env:
global:
language: android
jdk:
- oraclejdk8
android:
components:
...
before_install:
...
script:
- ./scripts/build.sh
我运行一些Gradle任务作为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.
问题是 Travis 构建仍然成功。我认为任何失败的 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
问题是我没有将 Gradle 行的退出代码从我的脚本传回给 Travis。
一旦我检查了 shell 脚本退出代码并传回给 Travis,一切都很好:
...
./gradlew clean assembleDebug testDebug -PdisablePreDex
if [ $? != 0 ]
then
exit $?
fi
... # continue doing other stuff