jenkins - groovy.lang.ReadOnlyPropertyException for Sonar Qube WaitForQualityGate Step -


while running multi-branch pipeline job in jenkins waitforqualitygate() step, jenkins throws groovy.lang.readonlypropertyexception: cannot set readonly property: status class: org.sonarsource.scanner.jenkins.pipeline.waitforqualitygatestep$qgstatus error. waitforqualitygate() works fine normal pipeline project run use groovy sandbox option checked.

below code used run waitforqualitygate() along sonar scanner msbuild.

void endsonarmsbuild() { if (env.branch_name == 'develop') {     stage('complete sonarqube analysis') {         withsonarqubeenv('civil sonar') {             def msbuildscannerhome = tool 'sonar-scanner-msbuild-3.0.0.629';             bat "${msbuildscannerhome}\\sonarqube.scanner.msbuild.exe end"         }     }     stage("quality gate") {         timeout(time: 1, unit: 'minutes') {             def qg = waitforqualitygate()             if ((qg.status = 'error')) {                 error "pipeline aborted due quality gate failure"             }         }     } } else {     echo "skipping stage since current branch is: ${env.branch_name}" } } 

the same code works in normal pipeline job not in multi-branch pipeline job. appreciated.

the full jenkins error log below:

groovy.lang.readonlypropertyexception: cannot set readonly property: status class: org.sonarsource.scanner.jenkins.pipeline.waitforqualitygatestep$qgstatus @ groovy.lang.metaclassimpl.setproperty(metaclassimpl.java:2744) @ groovy.lang.metaclassimpl.setproperty(metaclassimpl.java:3770) @ org.codehaus.groovy.runtime.invokerhelper.setproperty(invokerhelper.java:201) @ org.codehaus.groovy.runtime.scriptbytecodeadapter.setproperty(scriptbytecodeadapter.java:484) @ org.kohsuke.groovy.sandbox.impl.checker$5.call(checker.java:300) @ org.kohsuke.groovy.sandbox.groovyinterceptor.onsetproperty(groovyinterceptor.java:68) @ org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.sandboxinterceptor.onsetproperty(sandboxinterceptor.java:182) @ org.kohsuke.groovy.sandbox.impl.checker$5.call(checker.java:297) @ org.kohsuke.groovy.sandbox.impl.checker.checkedsetproperty(checker.java:294) @ com.cloudbees.groovy.cps.sandbox.sandboxinvoker.setproperty(sandboxinvoker.java:32) @ com.cloudbees.groovy.cps.impl.propertyaccessblock.rawset(propertyaccessblock.java:24) @ workflowscript.endsonarmsbuild(workflowscript:177) @ ___cps.transform___(native method) @ com.cloudbees.groovy.cps.impl.propertyishblock$continuationimpl.set(propertyishblock.java:88) @ com.cloudbees.groovy.cps.impl.assignmentblock$continuationimpl.assignanddone(assignmentblock.java:70) @ sun.reflect.generatedmethodaccessor718.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:498) @ com.cloudbees.groovy.cps.impl.continuationptr$continuationimpl.receive(continuationptr.java:72) @ com.cloudbees.groovy.cps.impl.constantblock.eval(constantblock.java:21) @ com.cloudbees.groovy.cps.next.step(next.java:74) @ com.cloudbees.groovy.cps.continuable.run0(continuable.java:154) @ org.jenkinsci.plugins.workflow.cps.sandboxcontinuable.access$001(sandboxcontinuable.java:18) @ org.jenkinsci.plugins.workflow.cps.sandboxcontinuable$1.call(sandboxcontinuable.java:33) @ org.jenkinsci.plugins.workflow.cps.sandboxcontinuable$1.call(sandboxcontinuable.java:30) @ org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.groovysandbox.runinsandbox(groovysandbox.java:108) @ org.jenkinsci.plugins.workflow.cps.sandboxcontinuable.run0(sandboxcontinuable.java:30) @ org.jenkinsci.plugins.workflow.cps.cpsthread.runnextchunk(cpsthread.java:165) @ org.jenkinsci.plugins.workflow.cps.cpsthreadgroup.run(cpsthreadgroup.java:330) @ org.jenkinsci.plugins.workflow.cps.cpsthreadgroup.access$100(cpsthreadgroup.java:82) @ org.jenkinsci.plugins.workflow.cps.cpsthreadgroup$2.call(cpsthreadgroup.java:242) @ org.jenkinsci.plugins.workflow.cps.cpsthreadgroup$2.call(cpsthreadgroup.java:230) @ org.jenkinsci.plugins.workflow.cps.cpsvmexecutorservice$2.call(cpsvmexecutorservice.java:64) @ java.util.concurrent.futuretask.run(futuretask.java:266) @ hudson.remoting.singlelaneexecutorservice$1.run(singlelaneexecutorservice.java:112) @ jenkins.util.contextresettingexecutorservice$1.run(contextresettingexecutorservice.java:28) @ java.util.concurrent.executors$runnableadapter.call(executors.java:511) @ java.util.concurrent.futuretask.run(futuretask.java:266) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) @ java.lang.thread.run(thread.java:745) 

waitforqualitygate() works fine multi branch pipeline job. silly mistake led issue mentioned here. instead of comparing qg status if ((qg.status == 'error')), trying assign value if ((qg.status = 'error')). quite stupid mistake.


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -