Jenkins / Groovy - разбить карту задач на два параллельных прогона - PullRequest
0 голосов
/ 17 июня 2020

У меня список файлов изменен с git. Я хочу выполнить простую задачу, учитывая этот список файлов, может быть 1 файл, может быть 10. Как мне запустить только две задачи одновременно?

stage('Run two tests at once out of many') {
  steps {
    script {
      def tests = [:] // create a map of tests

      def transformTestIntoStep(packageName) {
        return {
          node {
            echo "npm run customTask --file=$packageName" // do something with this file
          }
        }
      }

      // get list of files
      filesChanged = sh(
        returnStdout: true, 
        script: '''
        cd ${CLIENT}
        CHANGE_SET="git diff --name-only ${BRANCH_NAME} origin/master"
        echo "$CHANGE_SET"
        '''
      ).split('\n')

      // convert to map so parallel can use it
      tests = filesChanged.collectEntries {
        ["${it}" : transformTestIntoStep("${it}")]
      }

      // parallel runs all tasks together, how do I do just two at a time?
      parallel tests
    }
  }
}

Я думал, что это возможно, но не уверен, как поскольку список является динамическим c

stage('Run two tests at once out of many') {
  steps {
    parallel(
      First: {
        echo "This is branch a"
      },
      Second: {
        echo "This is branch b"
      }
    )
  }
}
...