Size: a a a

2021 June 16

A

Anton in jenkins_ru
это вообще код для запуска на определенных нодах
источник

DS

Dmitry Sergeev in jenkins_ru
можно в shared lib метод создать, который вытаскивает все параметры
```
build.getActions(hudson.model.ParametersAction)[0].getParameters()
```
Тебе вернет массив объектов с параметрами. Там как минимум будут поля name и value
Там и тип  параметра скорее всего будет
источник

A

Anton in jenkins_ru
спасибо

а пример как его принтом вывести можно?
источник

A

Anton in jenkins_ru
я получаю
groovy.lang.MissingPropertyException: No such property: build for class: groovy.lang.Binding
источник

A

Anton in jenkins_ru
def aaa = build.getActions(hudson.model.ParametersAction)[0].getParameters()

это функция какая то ?
источник

DS

Dmitry Sergeev in jenkins_ru
build это объект https://javadoc.jenkins-ci.org/hudson/model/Build.html
Текущий билд это currentBuild.rawBuild
источник

DS

Dmitry Sergeev in jenkins_ru
Пример shared lib метода
```
def call() {
   currentBuild.rawBuild.getActions(hudson.model.ParametersAction)[0].getParameters().each { it ->
       println it
       println it.getClass()
       println '######'
   }
}
```

Вывод

16:05:46  [Pipeline] echo
16:05:46  (StringParameterValue) stest='sd'
16:05:46  [Pipeline] echo
16:05:46  class hudson.model.StringParameterValue
16:05:46  [Pipeline] echo
16:05:46  ######
16:05:46  [Pipeline] echo
16:05:46  (BooleanParameterValue) sbool='false'
16:05:46  [Pipeline] echo
16:05:46  class hudson.model.BooleanParameterValue
16:05:46  [Pipeline] echo
16:05:47  ######
16:05:47  [Pipeline] }
16:05:47  [Pipeline] // node
16:05:47  [Pipeline] End of Pipeline
16:05:47  Finished: SUCCESS
источник

A

Anton in jenkins_ru
какие то библиотеки подключать нужно ??

import hudson.model.Job
import hudson.model.ParametersAction
import jenkins.model.Jenkins
источник

DS

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

A

Anton in jenkins_ru
что то я вообще не пойму что этому груви нужно
источник

A

Anton in jenkins_ru
публиковать скрины здесь нельзя. ну ок)
источник

DS

Dmitry Sergeev in jenkins_ru
скорее всего придется делать что-то типо if (it instanceof hudson.model.BooleanParameterValue) { parameters << booleanParam(name: it.name, value: it.value) }
Хотя мб достаточно просто в parameters добавлять it, и он все поймет правильно. А потом этот parameters передать в степ build - надо проверять
источник

A

Anton in jenkins_ru
да я понял. нужно отрендерить нужную переменную с параметрами
источник

A

Anton in jenkins_ru
но твой кусок кода почему то не работает. не могу скрин отправить
источник

A

Anton in jenkins_ru
груви это ещё то ...
источник

DS

Dmitry Sergeev in jenkins_ru
хотя видимо не получится, надо будет явно if'ы прописывать, так как
println booleanParam(name: 'test', value: false).getClass() выдает мне class org.jenkinsci.plugins.workflow.cps.UninstantiatedDescribableWithInterpolation, а не hudson.model.BooleanParameterValue
источник

DS

Dmitry Sergeev in jenkins_ru
норм язык. Мне больше нравится чем python. Тут больше проблемы с jenkins а не groovy.
источник

A

Anton in jenkins_ru
может быть. есть нюансы
источник

DS

Dmitry Sergeev in jenkins_ru
Если этот код ты добавляешь в пайплайн, то его нужно будет отдельно разрешить в /scriptApproval. Можно этот код оформить в виде shared lib метода и добавить либу глобально. Тогда апрувить не надо будет, ну и апрув такого кода скорее всего опасен, поскольку ты даешь доступ к билд объекту. Лучше вынести в shared lib, c простым интерфейсом - берем текущий билд обхъект и возвращаем массив параметров для степа build.
источник

A

Anton in jenkins_ru
shared lib это груви скрипт отдельный ?
источник