Size: a a a

2021 June 16

DS

Dmitry Sergeev in jenkins_ru
источник

DS

Dmitry Sergeev in jenkins_ru
Создаешь например файлик vars/getParameters.groovy
в нем
```
def call() {
   currentBuild.rawBuild.getActions(hudson.model.ParametersAction)[0].getParameters().each { it ->
       println it
       println it.getClass()
       println '######'
   }
}
```

подключаешь либу в jenkins.
Из пайплайна вызываешь как степ - getParameters()
источник

A

Anton in jenkins_ru
🙏
источник

A

Anton in jenkins_ru
вроде получилось

спасибо

теперь нужно сгенерить ещё правильно параметры
источник

A

Anton in jenkins_ru
сейчас попробую что то типа
if (it instanceof hudson.model.BooleanParameterValue) { parameters << booleanParam(name: it.name, value: it.value) }
источник

DS

Dmitry Sergeev in jenkins_ru
Слушай, она таки норм работает. Сейчас чекнул
```
def call() {
   return currentBuild.rawBuild.getActions(hudson.model.ParametersAction)[0].getParameters().collect { it }
}

```

Потом в пайплайне вызываю другую джобу

build job: 'test1', parameters: getParameters()


И test1 вызывается с теми же параметрами
источник

DS

Dmitry Sergeev in jenkins_ru
Щас проверю что будет если какого-то параметра нет
источник

A

Anton in jenkins_ru
То есть getParameters() возвращает нужный список нам параметров ?
источник

DS

Dmitry Sergeev in jenkins_ru
@toshuk_kr норм, даже если параметра какого-то не будет, он просто игнорится
источник

DS

Dmitry Sergeev in jenkins_ru
ну это shared lib метод в котором
```
return currentBuild.rawBuild.getActions(hudson.model.ParametersAction)[0].getParameters().collect { it }
```
collect это в groovy тоже самое что map во многих языках

Наверное можно просто вернуть currentBuild.rawBuild.getActions(hudson.model.ParametersAction)[0].getParameters() но я не уверен что это такой же массив если просто его объявить так def arr = []. Поэтому на всякий случай collect заюзал
источник

A

Anton in jenkins_ru
например я с test2 джобы тригерю test1  build job: 'test1', parameters: getParameters() то параметры с test2 передадутся в test1 ?
источник

A

Anton in jenkins_ru
интересно, ща попробую
источник

DS

Dmitry Sergeev in jenkins_ru
да, у меня робит норм
источник

DS

Dmitry Sergeev in jenkins_ru
вобщем щас проверил,  можно просто возвращать параметры в том виде, в котором их возвращает getParameters() из action'а. То есть достаточно в shaerd lib методе сделать такую обертку

```
def call() {
   return currentBuild.rawBuild.getActions(hudson.model.ParametersAction)[0].getParameters()
}
```

Обозвать его vars/getParameters.groovy
И вызывать в пайплайне build job: 'test2', parameters: getParameters()
источник

A

Anton in jenkins_ru
Ща так и сделаю. Проверю, спасибо большое
источник

DS

Dmitry Sergeev in jenkins_ru
фиганули красивое решение в итоге 👆
источник

HC

Henry Chinaski in jenkins_ru
да, заценил. Лихо обстряпали
источник

A

Anton in jenkins_ru
да. всё работает как нужно

тогда ещё маленький вопрос

как то можно один из параметров изменить ???
источник

DS

Dmitry Sergeev in jenkins_ru
конечно
```
currentBuild.rawBuild.getActions(hudson.model.ParametersAction)[0].getParameters().collect {
 if (it.name == 'name-perameter') {
    // change
 }
 return it
}
источник

DS

Dmitry Sergeev in jenkins_ru
нужен ли последний return не помню, мб можно без него. Но навсякий случай поставил
источник