【问题标题】:Mark Gradle build unstable in Jenkins when JUnit tests fail当 JUnit 测试失败时,Mark Gradle 在 Jenkins 中构建不稳定
【发布时间】:2012-01-10 17:55:50
【问题描述】:

我在 Jenkins 中有一个 Gradle 构建,其中包含作为构建的一部分执行的各种 JUnit 测试。现在,当一些测试失败时,完整的构建被标记为失败 - 因为 Gradle 说构建失败。

如何说服 Gradle 成功构建,然后让 Jenkins 将构建标记为不稳定?对于 ant,这完全没有问题。

【问题讨论】:

    标签: junit jenkins gradle


    【解决方案1】:

    使用ignoreFailures property in the test task.

    apply plugin: 'java'
    test {
         ignoreFailures = true
    }
    

    【讨论】:

    • 是否可以仅从命令行为 jenkins 配置此功能?因为使用此选项 FAILED build 被记录为 SUCCESS
    • 良好的构建成功 - 但詹金斯将构建显示为“成功”而不是“不稳定”:-/。有人对此有很好的解决方案吗?詹金斯的一些插件?什么的
    • 好吧 - 解决方案是使用这个。这个答案中的一些东西stackoverflow.com/questions/8148122/…我使用了“Text-finder”插件
    【解决方案2】:

    你可以使用外部属性来解决这个问题。

    if (!ext.has('ignoreTestFailures')) {
      ext.ignoreTestFailures = false
    }
    
    test {
      ignoreFailures = project.ext.ignoreTestFailures
    }
    

    在此设置中,默认情况下失败将使构建失败。但是如果你像这样调用 Gradle:gradle -PignoreTestFailures=true test 那么测试失败不会导致构建失败。因此,您可以将 Jenkins 配置为忽略测试失败,但在开发人员手动运行测试时使构建失败。

    【讨论】:

      【解决方案3】:

      您可以将其包含在您的主 bu​​ild.gradle 中,以应用于所有项目和所有测试任务。

      allprojects{
          tasks.withType(Test) {
              ignoreFailures=true;
          }
      }
      

      【讨论】:

        【解决方案4】:

        由于在我的情况下无法使用失败的测试,因此我发现了以下内容。 如果您使用的是脚本化的 jenkinsfile。可以将测试阶段包装在 try-catch 语句中。

        try {
         stage('test') {
          sh './gradlew test'
         } 
        } catch (e) {
          echo "Test FAILED"
        }
        

        这将捕获 gradle 抛出的构建异常,但它会将构建标记为不稳定。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-19
          • 2013-05-23
          • 2013-09-06
          • 1970-01-01
          • 2013-05-24
          • 2010-11-28
          • 2019-10-17
          • 2018-12-17
          相关资源
          最近更新 更多