groovy - Parallel jobs using build flow plugin with loop in jenkins -


i building jenkins flow using build flow plugin grab of jobs, compare name regex, , if matches trigger build of job.
have working perfectly:

import jenkins.model.jenkins import java.util.regex.* pattern myregex = ~/release_status.*/ (item in jenkins.model.jenkins.instance.items)  {   if (item.name ==~ myregex) {     build( "$item.name" )   } } 

however takes long time build of matching jobs (right there 20 there many more).
trying make run each job in parallel can't figure out groovy syntax.
have tried 3 different ways:

import jenkins.model.jenkins import java.util.regex.* pattern myregex = ~/release_status.*/ parallel (   {     (item in jenkins.model.jenkins.instance.items)      {       if (item.name ==~ myregex) {         build( "$item.name" )       }     }   } ) 

^^this still works, works same way before. goes 1 job @ time , not build next until previous 1 finishes.

import jenkins.model.jenkins import java.util.regex.* pattern myregex = ~/release_status.*/ parallel (   {     (item in jenkins.model.jenkins.instance.items)      {       if (item.name ==~ myregex) {         { build( "$item.name" ) },       }     }   } ) 

^^this errors

script1.groovy: 9: ambiguous expression either parameterless closure expression or isolated open code block;    solution: add explicit closure parameter list, e.g. {it -> ...}, or force treated open block giving label, e.g. l:{...} @ line 9, column 9.            { build( "$item.name" ) }, 

break

import jenkins.model.jenkins import java.util.regex.* pattern myregex = ~/release_status.*/ parallel (   [     (item in jenkins.model.jenkins.instance.items)      {       if (item.name ==~ myregex) {         useless: { build( "$item.name" ) },       }     }   ] ) 

break

import jenkins.model.jenkins import java.util.regex.* pattern myregex = ~/release_status.*/ parallel (     (item in jenkins.model.jenkins.instance.items)      {       if (item.name ==~ myregex) {         { build( "$item.name" ) },       }     } ) 

both of blocks above error following:

org.codehaus.groovy.control.multiplecompilationerrorsexception: startup failed: script1.groovy: 5: unexpected token: @ line 5, column 5.        (item in jenkins.model.jenkins.instance.items)  

a lot of code here simple. looking around can't find many resources on groovy.

parallel takes list of closures, should able use collect return list:

import jenkins.model.jenkins import java.util.regex.*  pattern myregex = ~/release_status.*/ parallel jenkins.model.jenkins.instance.items.collect { item ->     { ->          if (item.name ==~ myregex) {             build( "$item.name" )         }     } } 

an alternative returns closure if name passes (rather closure every item, lot of finish early) is:

import jenkins.model.jenkins import java.util.regex.*  pattern myregex = ~/release_status.*/  parallel jenkins.instance.items.findall { item -> item.name ==~ myregex}                                .collect { item -> { -> build("$item.name") } } 

Comments

Popular posts from this blog

searchKeyword not working in AngularJS filter -

sequelize.js - Sequelize: sort by enum cases -

user interface - how to replace an ongoing process of image capture from another process call over the same ImageLabel in python's GUI TKinter -