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.