Локальные переменные в параллельной задаче Jenkinsfile - PullRequest
0 голосов
/ 08 октября 2019
    tasks = [:]

    availableNodes.each { nodeName ->

        final def ProfilesForThisNode = getProfilesForNode(args.Profiles, nodeName)

        if (ProfilesForThisNode) {

            tasks[nodeName] = {

                node(nodeName) {

                    try {
                        final def workspace = path("$path123")

                        ws("$workspace") {
                            stage("$nodeName transmission") {

                                kw_job = "some_name"

                                if (isWindows()) {
                                    if (!kw_job.contains("Windows")) {
                                        kw_job = kw_job + "_Windows"
                                    }
                                }
                                else {
                                    if(!kw_job.contains("Linux")) {
                                        kw_job = kw_job + "_Linux"
                                    }
                                }
                                echo kw_job

                            }
                        }
                    } catch (hudson.model.Run.RunnerAbortedException e) {
                        currentBuild.result = 'FAILURE'
                    }
                }
            }
        }
    }

    parallel(tasks)

Я использую этот код (часть Jenkinsfile) дважды: один раз на Slave Windows и один раз на Slave Linux Jenkins.

Я думаю, это довольно очевидно, чего я хочу: один эхос «some_name_Windows» и один с «some_name_Linux», но я получаю что-то вроде «some_name_Windows» и «some_name_Windows_Linux».

Как локально использовать переменные на одном ведомом устройстве во время двух (или более) параллельных процессов с Jenkinsfileтрубопровод?

1 Ответ

0 голосов
/ 08 октября 2019

Если вы объявляете переменную без ключевого слова def, она имеет глобальную область видимости. Измените его на

def kw_job = "some_name"

, и все будет хорошо.

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