Gilles QUERRET
Gilles QUERRET

Reputation: 583

Execute "Publish TestNG results" step in Jenkinsfile

I'm trying to convert an existing set of Jenkins jobs to the new pipeline syntax, and I don't understand how to convert the post-build action "Publish TestNG results". The pipeline syntax page doesn't help as this specific action is not listed, so I've tried the following syntax:

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

My assumption being that the class name would have to match the content of config.xml in the current configuration:

<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>

However, an exception is being thrown when executing the statement :

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 my questions are :

In case that's relevant for the question, I'm running Jenkins 2.8 with all pipeline plugins up to date, and the full Jenkinsfile can be found on GitHub

Upvotes: 9

Views: 10873

Answers (2)

user1053510
user1053510

Reputation: 1676

Publishing TestNG test results is now available in Pipelines. Use:

step([$class: 'Publisher'])

or with custom location of the result file:

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

According to this comment on Jenkins Jira adding to Pipeline snippet generator is pending.

(tested on Jenkins 2.9.13 and Pipeline plugin 2.4)

Upvotes: 19

Jason Swager
Jason Swager

Reputation: 6501

At this time, the TestNG Plugin isn't compatible with Pipelines. See JENKINS-27121

Upvotes: 5

Related Questions