Search code examples
jenkinsgroovydsljenkins-groovyjenkins-job-dsl

jenkins job dsl - No signature of method: java.lang.String.call()


I am unable to run this piece of code:

buildPath = 'applications'
buildJob(['java', 'nodejs'])


def buildJob(def jobList){
  for(job in jobList){
    def jobName = "${job}_seed"
    def jobDescription = "Jenkins DSL seed for ${job}"
    def jobScriptPath = "resources/dsl/${jobName}.groovy"
    job("${buildPath}/${jobName}")
  }
}

So, I am getting this error:

Processing provided DSL script
ERROR: (script, line 12) No signature of method: java.lang.String.call() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [applications/java_seed]
Possible solutions: wait(), any(), wait(long), take(int), each(groovy.lang.Closure), any(groovy.lang.Closure)
Finished: FAILURE

I do not see where or what is causing this error. I created a single job outside of the buildJob(def jobList) function and it is working but I need to do the loop to automation the jobs creation.

Any ideas?


Solution

  • you are iterating string array in the following line:

    for(job in jobList){
    

    and using variable job for this.

    then you try to invoke method call on this variable:

    job("${buildPath}/${jobName}")