我在Jenkins中有一个使用Gradle构建的项目,其中包含各种JUnit测试用例作为构建的一部分执行。当其中一些测试用例失败时,整个构建将标记为失败 - 因为Gradle报告了构建失败。
如何说服Gradle成功构建,并让Jenkins将构建标记为不稳定?使用Ant则没有任何问题。
在测试任务中使用ignoreFailures属性。
apply plugin: 'java'
test {
ignoreFailures = true
}
if (!ext.has('ignoreTestFailures')) {
ext.ignoreTestFailures = false
}
test {
ignoreFailures = project.ext.ignoreTestFailures
}
在这种设置下,默认情况下失败会使构建失败。但是如果你像这样调用Gradle:gradle -PignoreTestFailures=true test
,那么测试失败将不会导致构建失败。因此,您可以配置Jenkins忽略测试失败,但在开发人员手动运行测试时让构建失败。
allprojects{
tasks.withType(Test) {
ignoreFailures=true;
}
}
由于在我的情况下,仅忽略失败的测试是不可行的,因此我发现了以下内容。 如果您正在使用脚本化的Jenkinsfile,则可以将测试阶段包装在try-catch语句中。
try {
stage('test') {
sh './gradlew test'
}
} catch (e) {
echo "Test FAILED"
}
这将捕获由Gradle抛出的构建异常,但会将构建标记为不稳定。