I wrote:

> I have a Jenkins job using the build flow plugin. A portion of it
> looks like the code below.
>
> parallel (
>    { ignore ( FAILURE ) { build ( "job1", BRANCH: params [ "BRANCH" ] ) } },
>    { ignore ( FAILURE ) { build ( "job2", BRANCH: params [ "BRANCH" ] ) } }
> )
>
> I'd like to replace the BRANCH parameter with a call to a script so
> that I can use a fallback branch in some cases. Doing so seems fairly
> tricky but I think I got it working, sort of. The code now looks like
> this.
>
> branchName = build.buildVariableResolver.resolve("BRANCH")
> def chkbranch ( String product, String branch ) {
>    def cmd = ["/bin/bash", "-c", "/home/jenkins/bin/chkbranch"+"
> "+product+" "+branch]  // Build the command string to run
>    def ans = cmd.execute().text  // Run the command
>    return "$ans"[0..-2]  // Chomp the answer before returning
> }
> parallel (
>    { ignore ( FAILURE ) { build ( "job1", BRANCH: chkbranch ( "job1", 
> branchName ) ) } }
>    { ignore ( FAILURE ) { build ( "job2", BRANCH: chkbranch ( "job2", 
> branchName ) ) } }
> )
>
> But this doesn't work. It throws a completely indecipherable Groovy
> error and I'm lost. But it does work if I remove the "parallel"
> grouping. Unfortunately, that extends the time to run the job
> excessively.
>
> The error looks something like the following. Any ideas?
>
> ERROR: Failed to run DSL Script
> groovy.lang.MissingMethodException: No signature of method:
> Script1$_run_closure8.call() is applicable for argument types:
> (Script1$_run_closure9, Script1$_run_closure10, Script1$_run_closure11,
> Script1$_run_closure12, Script1$_run_closure13, Script1$_run_closure14,
> Script1$_run_closure15) values: [Script1$_run_closure9@9202ce0,
> Script1$_run_closure10@1f622ace, ...]
> Possible solutions: doCall(), any(), any(), find(), grep(), dump()
>     at 
> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
>     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:903)
>     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:723)
>     at 
> groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:44)
>     at 
> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)
>     at 
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
>     at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
>     at Script1.run(Script1.groovy:30)
>     at Script1$run.call(Unknown Source)
>     at 
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
>     at Script1$run.call(Unknown Source)
>     at com.cloudbees.plugins.flow.FlowDSL.executeFlowScript(FlowDSL.groovy:84)
>     at 
> com.cloudbees.plugins.flow.FlowRun$FlyweightTaskRunnerImpl.run(FlowRun.java:219)
>     at hudson.model.Run.execute(Run.java:1759)
>     at com.cloudbees.plugins.flow.FlowRun.run(FlowRun.java:155)
>     at hudson.model.ResourceController.execute(ResourceController.java:89)
>     at hudson.model.Executor.run(Executor.java:240)
>     at hudson.model.OneOffExecutor.run(OneOffExecutor.java:43)

Stefan Thomasson answered:

> I am not sure that this is what cause the error but I think you
> forgot a comma between the two ignores

Thanks for the reply. But that was just a cut-and-paste error. I don't 
actually have the version quoted as the parallel statements are 
commented in my copy. Without the parallel, the commas should not be 
present. When I removed the comments to include the code in my message, 
I forgot to put the commas back.

I'm still stymied by the obtuse Groovy error and hoping for some 
enlightenment.

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/557F6902.4000305%40us.thalesgroup.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to