The following code worked for me after following the example from docs 
<https://www.jenkins.io/doc/pipeline/examples/#parallel-from-list>:


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.workflow.cps.CpsClosure2@3a396959, repo2=
> org.jenkinsci.plugins.workflow.cps.CpsClosure2@1a4b5000, repo3=org.
> jenkinsci.plugins.workflow.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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/507c0997-e718-4f7a-ab5d-05b598f3e736o%40googlegroups.com.

Reply via email to