Параметр динамического выбора декларативного конвейера Jenkins не обновляется после первой сборки - PullRequest
1 голос
/ 29 апреля 2019

Я пытаюсь преобразовать старые задания Jenkins в декларативный конвейерный код.

При попытке использовать параметр выбора в сценарии я реализую функцию, которая должна возвращать обновленные значения, если значения не самыепоследние - работа не удастся.

Проблема в том, что после первой сборки, которая выглядит нормально, значения остаются неизменными, после чего они не обновляются, что, как я уже говорил выше, проваливает мою работу.Это похоже на написанную мной функцию, которая запускается только один раз при первой сборке и больше никогда не запускается.

Я попытался написать код таким образом, чтобы вывод был отправлен в файл и былчитать из него - таким образом, возможно, функция будет обновлена ​​путем получения текста из файла - это не сработало.

Я пытался просмотреть документацию Jenkins / множество других тем и не смогнайти вещь.

Мой код выглядит следующим образом:

def GetNames() {
    def workspace = "..."
    def proc = "${workspace}/script.sh list".execute()
    return proc.text
}

$ {workspace} - это просто мое рабочее пространство, не имеет значения.

script.sh - скрипт, который на 100% работает и проверен

return proc.text - возвращает значения, я проверял его в моем JenkinsРаздел сайта / скрипта и значения возвращаются правильно и обновляются.

Раздел моих параметров:

parameters {
    choice(name: 'Names', choices: GetNames(), description: 'The names')
}

Первая сборка Я получаю 5 имен, что хорошо, потому что это обновленные значения, секундыСборка Я знаю, что есть 10 значений, но я все еще получаю 5 из ранее, и каждая сборкапосле того, как я все равно получу те же 5 имен - они вообще не обновляются, функция не запускается снова.

Кажется, что это очень долго работающая проблема, которая до сих пор не была исправленаединственный упомянутый поток был следующим: динамические декларативные параметры конвейера Jenkins , но решение в сценарии, а не в декларативной форме.

1 Ответ

1 голос
/ 01 мая 2019

Ну, я наконец-то понял, что решение объединяет декларативные и скриптовые способы,

(используя плагин с активными параметрами).

node {
    properties([
        parameters([
            [$class: 'ChoiceParameter', 
                choiceType: 'PT_SINGLE_SELECT', 
                description: 'The names', 
                filterLength: 1, 
                filterable: true, 
                name: 'Name', 
                randomName: 'choice-parameter-5631314439613978', 
                script: [
                    $class: 'GroovyScript', 
                    script: [
                        classpath: [], 
                        sandbox: false, 
                        script: '''
                                    some code.....
                                    return something'''
                    ]
                ]
            ], 
        ])
    ])
}

pipeline {
    agent any
.
.

Таким образом, часть скрипта активного параметра инициируется каждый раз, когда вы загружаете страницу, и значения возвращаются обновляется каждый раз.

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