Hi,not sure if your problem is now solved, so ..Try changing your code to use: w pipeline doesn't seem to achieve the goal: pipeline { agent any options { ansiColor('xterm') } parameters { extendedChoice description: '', multiSelectDelimiter: ',', name: 'REPO_NAMES', quoteValue: false, saveJSONParameterToFile: false, type: 'PT_CHECKBOX', value: 'repo1,repo2,repo3', visibleItemCount: 3 } stages { stage('Prepare repos to run on') { steps { script { repo_names = params.REPO_NAMES.split(',') def single_repo_jobs = [:] for (repo_name in repo_names) { def theRepoName = "$repo_name" // This assignment is important println theRepoName single_repo_jobs[ theRepoName ] = { stage( theRepoName ) { catchError { build job: 'check-single-repo', parameters: [ string(name:'REPO_NAME', value: theRepoName ) ] } } } } println single_repo_jobs parallel single_repo_jobs } } } } } I keep forgetting the exact reason for this extra assignment needed but do know it's needed. I'm sure it'sproperly explained and documented, but remains non-intuitive.gr M
On Thursday, June 11, 2020, 04:54:51 PM GMT+2, Roman O <warrior7...@gmail.com> wrote: The following code worked for me after following the example from docs: pipeline { agent any options { ansiColor('xterm') } parameters { extendedChoice description: '', multiSelectDelimiter: ',', name: 'REPO_NAMES', quoteValue: false, saveJSONParameterToFile: false, type: 'PT_CHECKBOX', value: 'repo1,repo2,repo3', visibleItemCount: 3 } stages { stage('Prepare repos to run on') { steps { script { def repo_names = params.REPO_NAMES.split(',') def single_repo_jobs = repo_names.collectEntries { ["${it}" : { catchError { stage(it) { build job: 'check-single-repo', parameters: [ string(name:'REPO_NAME', value: "${it}") ] } } } ] } parallel single_repo_jobs } } On Thursday, June 11, 2020 at 4:49:15 PM UTC+3, Roman O wrote: My goal is to run the same job check-single-repo on multiple repositories in parallel. Below pipeline doesn't seem to achieve the goal: pipeline { agent any options { ansiColor('xterm') } parameters { extendedChoice description: '', multiSelectDelimiter: ',', name: 'REPO_NAMES', quoteValue: false, saveJSONParameterToFile: false, type: 'PT_CHECKBOX', value: 'repo1,repo2,repo3', visibleItemCount: 3 } stages { stage('Prepare repos to run on') { steps { script { repo_names = params.REPO_NAMES.split(',') def single_repo_jobs = [:] for (repo_name in repo_names) { println repo_name single_repo_jobs[repo_name] = { stage(repo_name) { catchError { build job: 'check-single-repo', parameters: [ string(name:'REPO_NAME', value: repo_name) ] } } } } println single_repo_jobs parallel single_repo_jobs } } } } } Its output: ... repo1 repo2 repo3 {repo1=org.jenkinsci.plugins.w orkflow.cps.CpsClosure2@ 3a396959, repo2=org.jenkinsci.plugins.wo rkflow.cps.CpsClosure2@ 1a4b5000, repo3=org.jenkinsci.plugins.wo rkflow.cps.CpsClosure2@1d034ac } [Pipeline] parallel [Pipeline] { (Branch: repo1) [Pipeline] { (Branch: repo2) [Pipeline] { (Branch: repo3) [Pipeline] stage [Pipeline] { (repo3) [Pipeline] stage [Pipeline] { (repo3) [Pipeline] stage [Pipeline] { (repo3) [Pipeline] catchError [Pipeline] { [Pipeline] catchError [Pipeline] { [Pipeline] catchError [Pipeline] { [Pipeline] build (Building check-single-repo) Scheduling project: check-single-repo [Pipeline] build (Building check-single-repo) Scheduling project: check-single-repo [Pipeline] build (Building check-single-repo) Scheduling project: check-single-repo Starting building: check-single-repo #230 Starting building: check-single-repo #230 Starting building: check-single-repo #230 [Pipeline] } check-single-repo #230 repo3 completed with status UNSTABLE (propagate: false to ignore) [Pipeline] } check-single-repo #230 repo3 completed with status UNSTABLE (propagate: false to ignore) [Pipeline] } check-single-repo #230 repo3 completed with status UNSTABLE (propagate: false to ignore) ... As it invokes only one pipeline #230 on repo3 How to run the same Jenkins job on different repositories in parallel using Declarative Pipeline? -- 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 jenkinsci-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/507c0997-e718-4f7a-ab5d-05b598f3e736o%40googlegroups.com. -- 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 jenkinsci-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/831150088.126722.1592380519804%40mail.yahoo.com.