Динамически генерируйте и выполняйте параллельные шаги с значимым именем, которое получает наборы в соответствии с именем этапа, определенным в замыкании на лету - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь создать обобщенный c метод, который принимает n чисел замыканий и запускает каждое замыкание параллельно. Мне нужна хорошая читабельность в журнале консоли, и поэтому я пытаюсь программно предоставить осмысленное имя каждому этапу.

В методе makeRunParallelSteps () как получить имя этапа из замыкания?

Пример:

Closure car = {
    stage("Car"){
    println("car")
}
}

    Closure bike = {
    stage("Bike"){
    println("bike")
    }
    }

    Closure train = {
    stage("Train"){
    println("train")
    }
    }

    Closure plane = {
    stage("Plane"){
    println("plane")
    }
    }

    Closure ship = {
    stage("Ship"){
    println("ship")
    }
    }

    void makeRunParallelSteps(Closure... args){
        LinkedHashMap parallelSteps = [:]
    for(int i=0; i < args.length; i++){
        Closure temp = args[i]
        //String stageNameOfClosure = temp.doSomethingTogetStageName() // Reflection?
    parallelSteps["Stage Name from closure - ${i}"] = {
        timestamps {
            timeout(5) {
        temp()
    }
    }
    }
    }

    parallelSteps << [failFast  : true]
    parallel parallelSteps
    parallelSteps.clear()
    }

    //makeRunParallelSteps(car, bike)
    //makeRunParallelSteps(car, bike, plane)
    //makeRunParallelSteps(car, bike, plane, train)
    makeRunParallelSteps(car, bike, plane, train, ship)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...