properties([disableConcurrentBuilds(), pipelineTriggers([cron(env.BRANCH_NAME == "master" ? "H 9 * * 1-5" : "")]), parameters([string(name: "PARALLEL", defaultValue: (env.BRANCH_NAME == "master" ? "5" : "3"), description: "Number of triggered jobs in parallel simultaneously")])]) node("master") { stage("Invoking git clone") { checkout scm dir("/home/oleg/majordomo") { List gitDirectories = (sh (script: 'ls --directory -1 */*', returnStdout: true)).split("\n") gitDirectories.collate(params.PARALLEL.toInteger()) .each { directories -> parallel (directories.collectEntries { directory -> [(directory): {warnError("Failed to update Git repository in $directory"){ sh (["git -C $directory checkout master || true", "git -C $directory pull --rebase", "$WORKSPACE/clean.sh $directory"].join("; ")) }}] }) } } } }