2016-06-09 6 views
4

Ich versuche, einen vorhandenen Satz von Jenkins Aufträge an die neue Pipeline-Syntax zu konvertieren, und ich verstehe nicht, wie die Post-Build-Aktion „TestNG Ergebnisse veröffentlichen“ zu konvertieren. Die Pipeline-Syntax Seite hilft nicht, da diese bestimmte Aktion nicht aufgeführt ist, so habe ich die folgende Syntax versucht:Execute „Publish TestNG Ergebnisse“ Schritt in Jenkinsfile

step([$class: 'hudson.plugins.testng.Publisher', reportFilenamePattern: 'test-output/testng-results.xml']) 

Meine Vermutung ist, dass der Klassenname, den Inhalt von config.xml übereinstimmen würde in die aktuelle Konfiguration:

<hudson.plugins.testng.Publisher plugin="[email protected]"> 
    <reportFilenamePattern>test-output/testng-results.xml</reportFilenamePattern> 
    <escapeTestDescp>true</escapeTestDescp> 
    <escapeExceptionMsg>true</escapeExceptionMsg> 
    <showFailedBuilds>false</showFailedBuilds> 
    <unstableOnSkippedTests>false</unstableOnSkippedTests> 
    <failureOnFailedTestConfig>false</failureOnFailedTestConfig> 
</hudson.plugins.testng.Publisher> 

jedoch eine Ausnahme ausgelöst wird, wenn die Ausführung der Anweisung:

java.lang.IllegalArgumentException: argument type mismatch 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:193) 
    at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:104) 
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:134) 
    at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:113) 
    at groovy.lang.GroovyObject$invokeMethod.call(Unknown Source) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
    at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:151) 
    at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:21) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:115) 
    at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:149) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:146) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123) 
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:15) 
    at WorkflowScript.testBranch(WorkflowScript:71) 

So sind meine Fragen:

  • ist es möglich, jede Art von Post-Job-Aktion mit der 'Schritt' Anweisung auszulösen?
  • Wenn ja, gibt es eine Faustregel, um den Klassennamen und die Attributnamen zu finden?

Im Fall, dass für die Frage relevant ist, ich bin Jenkins 2.8 mit allen Pipeline-Plugins auf dem neuesten Stand laufen und die volle Jenkinsfile kann on GitHub

Antwort

2

Zu diesem Zeitpunkt gefunden werden, ist das TestNG Plugin nicht kompatibel mit Pipelines. Siehe JENKINS-27121

5

Publishing TestNG-Testergebnisse sind jetzt in Pipelines verfügbar. Verwendung:

step([$class: 'Publisher']) 

oder mit benutzerdefinierten Speicherort der Ergebnisdatei:

step([$class: 'Publisher', reportFilenamePattern: '**/custom/testng-results.xml']) 

Nach this comment on Jenkins Jira Hinzufügen zu Pipeline-Schnipsel Generator ansteht.

(getestet auf Jenkins 2.9.13 und Pipeline-Plugin 2.4)

+0

Ich hatte auch das TestNG Plugin 1.14 zu aktualisieren – checketts