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 
<[email protected]> 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 [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.
  

-- 
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/831150088.126722.1592380519804%40mail.yahoo.com.

Reply via email to