Параллельный скрипт Jenkins в цикле с использованием неправильных переменных - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь создать динамическую группу шагов для параллельного запуска. Следующий пример - это то, что я придумал (и нашел примеры на https://devops.stackexchange.com/questions/3073/how-to-properly-achieve-dynamic-parallel-action-with-a-declarative-pipeline).. Но у меня возникают проблемы с получением ожидаемых переменных. Кажется, что результатом всегда являются переменные из последней итерации цикла .

В следующем примере эхо-выход всегда равен bdir2 для обоих тестов:

pipeline {
  agent any

  stages {
    stage('Test') {
      steps {
        script {
          def tests = [:]
          def files

          files = ['adir1/adir2/adir3','bdir1/bdir2/bdir3']

          files.each { f ->
            rolePath = new File(f).getParentFile()
            roleName = rolePath.toString().split('/')[1]

            tests[roleName] = {
              echo roleName
            }
          }

          parallel tests
        }
      }
    }
  }
}

Я ожидаю, что один из тестов выдаст adir2, а другой будет bdir2. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 15 января 2019

Просто попробуйте переместить тестовую секцию немного выше, и это будет работать

pipeline {
  agent any
  stages {
    stage('Test') {
      steps {
        script {
          def tests = [:]
          def files

          files = ['adir1/adir2/adir3','bdir1/bdir2/bdir3']

          files.each { f ->
            tests[f] = {
             rolePath = new File(f).getParentFile()
             roleName = rolePath.toString().split('/')[1]
             echo roleName
            }
          }
          parallel tests
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...