2011-12-01 7 views
19

Ho una build Gradle in Jenkins con vari test JUnit eseguiti come parte della build. Ora, quando alcuni test falliscono, la compilazione completa viene contrassegnata come fallita, perché Gradle dice che la compilazione fallisce.Mark Gradle non è stabile in Jenkins quando i test JUnit falliscono

Come posso convincere Gradle a succedere alla build e poi a Jenkins per contrassegnare la build come instabile? Con la formica questo non è stato affatto un problema.

risposta

21

Utilizzare il ignoreFailures property in the test task.

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

È possibile configurarlo solo per jenkins dalla riga di comando? Perché con questa opzione FAILED build è registrato come SUCCESS – MariuszS

+2

buona costruzione riuscita - ma jenkins mostra build come "successo" e non come "unstable": - /. Qualcuno ha una buona soluzione per questo? Qualche plugin per Jenkins? o qualcosa di buono –

+1

- la soluzione è usare questo. E qualcosa da questo risponde http://stackoverflow.com/questions/8148122/how-to-mark-a-build-unstable-in-jenkins-when-running-shell-scripts Ho usato il plugin "Text-finder" –

1

È possibile includere questo nella vostra build.gradle principale per essere applicata a tutti i progetti e tutte le attività di test.

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

È possibile utilizzare proprietà esterne per risolvere questo problema.

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

test { 
    ignoreFailures = project.ext.ignoreTestFailures 
} 

In questa configurazione, in caso di errori di default, la costruzione non andrà a buon fine. Ma se chiami Gradle in questo modo: gradle -PignoreTestFailures=true test allora i test falliti non falliranno la costruzione. Quindi puoi configurare Jenkins per ignorare i fallimenti del test, ma fallire la compilazione quando uno sviluppatore esegue i test manualmente.