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/3aff4bde-6bbc-4c12-bc76-52320a01fecao%40googlegroups.com.

Reply via email to