Динамические шаги в конвейерной параллели не работают должным образом - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь создать динамически параллельные шаги в конвейере Jenkins из коллекции.

Когда я запускаю sh кодовый блок без присвоения переменной, все работает нормально. Когда я присваиваю sh код переменной и затем пытаюсь его выполнить - тогда для каждого параллельного шага используйте последний элемент в коллекции.

CLUSTERS="192.168.0.1,192.168.0.2|127.0.0.1,127.0.0.2"

Работа как положено:

stage("Run Repair") {
  environment { CLUSTERS = findClusters() }
  steps {
    script {
      def splitted_clusters = CLUSTERS.split('\\|')
      def stepsForParallel = splitted_clusters.collectEntries {
        echo "Non parallel ${it}"
        ["Repair ${it}" : {sh(script: """ echo "parallel: Found cluster with IPs: ${it}" """)}]
      }
      echo "Start parallel:"
      parallel stepsForParallel
    }
  }
}

Выход:

Non parallel 192.168.0.1,192.168.0.2
Non parallel 127.0.0.1,127.0.0.2
Start parallel:
[Repair 192.168.0.1,192.168.0.2] Running shell script
[Repair 192.168.0.1,192.168.0.2] Found cluster with IPs: 192.168.0.1,192.168.0.2
[Repair 127.0.0.1,127.0.0.2] Running shell script
[Repair 127.0.0.1,127.0.0.2] Found cluster with IPs: 127.0.0.1,127.0.0.2

Не работает:

stage("Run Repair") {
  environment { CLUSTERS = findClusters() }
  steps {
    script {
      def splitted_clusters = CLUSTERS.split('\\|')
      def stepsForParallel = splitted_clusters.collectEntries {
        command = """ echo "Found cluster with IPs: ${it}" """
        echo "Non parallel ${it}"
        ["Repair ${it}" : {sh(script: command)}]
      }
      echo "Start parallel:"
      parallel stepsForParallel
    }
  }
}

Неверный вывод:

Non parallel 192.168.0.1,192.168.0.2
Non parallel 127.0.0.1,127.0.0.2
Start parallel:
[Repair 192.168.0.1,192.168.0.2] Running shell script
[Repair 192.168.0.1,192.168.0.2] Found cluster with IPs: 127.0.0.1,127.0.0.2
[Repair 127.0.0.1,127.0.0.2] Running shell script
[Repair 127.0.0.1,127.0.0.2] Found cluster with IPs: 127.0.0.1,127.0.0.2

Итак, я пытаюсь понять, что скрывается за этим поведением?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...