【发布时间】:2012-01-10 17:55:50
【问题描述】:
我在 Jenkins 中有一个 Gradle 构建,其中包含作为构建的一部分执行的各种 JUnit 测试。现在,当一些测试失败时,完整的构建被标记为失败 - 因为 Gradle 说构建失败。
如何说服 Gradle 成功构建,然后让 Jenkins 将构建标记为不稳定?对于 ant,这完全没有问题。
【问题讨论】:
我在 Jenkins 中有一个 Gradle 构建,其中包含作为构建的一部分执行的各种 JUnit 测试。现在,当一些测试失败时,完整的构建被标记为失败 - 因为 Gradle 说构建失败。
如何说服 Gradle 成功构建,然后让 Jenkins 将构建标记为不稳定?对于 ant,这完全没有问题。
【问题讨论】:
使用ignoreFailures property in the test task.
apply plugin: 'java'
test {
ignoreFailures = true
}
【讨论】:
你可以使用外部属性来解决这个问题。
if (!ext.has('ignoreTestFailures')) {
ext.ignoreTestFailures = false
}
test {
ignoreFailures = project.ext.ignoreTestFailures
}
在此设置中,默认情况下失败将使构建失败。但是如果你像这样调用 Gradle:gradle -PignoreTestFailures=true test 那么测试失败不会导致构建失败。因此,您可以将 Jenkins 配置为忽略测试失败,但在开发人员手动运行测试时使构建失败。
【讨论】:
您可以将其包含在您的主 build.gradle 中,以应用于所有项目和所有测试任务。
allprojects{
tasks.withType(Test) {
ignoreFailures=true;
}
}
【讨论】:
由于在我的情况下无法使用失败的测试,因此我发现了以下内容。 如果您使用的是脚本化的 jenkinsfile。可以将测试阶段包装在 try-catch 语句中。
try {
stage('test') {
sh './gradlew test'
}
} catch (e) {
echo "Test FAILED"
}
这将捕获 gradle 抛出的构建异常,但它会将构建标记为不稳定。
【讨论】: