Size: a a a

2021 April 14

Н

Никитяо in jenkins_ru
можно еще yq поставить и его использовать
источник

DS

Dmitry Sergeev in jenkins_ru
я хочу в job dsl прочитать yaml и использовать данные из него
Я могу сделать


def config = readYaml file: './config.yaml'
jobDsl scriptText: """pipelineJob('test') {
   definition {
       cps {
           script('node {println \"hello\"}')
           sandbox()
       }
   }
}"""

Но не могу
jobDsl scriptText: """pipelineJob('test') {
   def config = readYaml file: './config.yaml'
   definition {
       cps {
           script('node {println \"hello\"}')
           sandbox()
       }
   }
}"""
источник

DS

Dmitry Sergeev in jenkins_ru
естественно там не scriptText а jobDsl targets: 'seed.groovy'
источник

HC

Henry Chinaski in jenkins_ru
Я скриптовал чтение файла в джобДСЛ. Надо в секьюрити заапрувить
источник

DS

Dmitry Sergeev in jenkins_ru
степом? readYaml ?
источник

DS

Dmitry Sergeev in jenkins_ru
читать файл то не проблема там есть readFileFromWorkspace. Но вот распарсить ямл, там нет методов
источник

HC

Henry Chinaski in jenkins_ru
не, я делал для чойсПарам выпадающий список, который в файле. Для тебя могу предложить вот такой финт
источник

HC

Henry Chinaski in jenkins_ru
создать обычный пайплайнДжоб с ссылкой на пайплайн
источник

DS

Dmitry Sergeev in jenkins_ru
пример можно? Чтобы понимать о чем речь. job-dsl не позволяет же степы вызывать
источник

HC

Henry Chinaski in jenkins_ru
pipelineJob('seedJob') { ... 
scriptPath('pipelines/common/seedJob.Jenkinsfile')
источник

DS

Dmitry Sergeev in jenkins_ru
так это создаст джобу типа pipeline,  в котором будет  скрипт из файла 'pipelines/common/seedJob.Jenkinsfile'
источник

DS

Dmitry Sergeev in jenkins_ru
вопрос же вообще не про это
источник

HC

Henry Chinaski in jenkins_ru
всё верно, и эта джоба должна в будущем создавать все твои пайплайны
источник

HC

Henry Chinaski in jenkins_ru
так у тебя с пайплайном открываются возможности
источник

HC

Henry Chinaski in jenkins_ru
Я создаю список и передаю его в пайплайне

jobDsl targets: "${SEED_JOBS_TARGETS}",
источник

DS

Dmitry Sergeev in jenkins_ru
окей, внутри этого пайпалйна надо создавать джобы в jenkins, это вызовы  степов jobDsl
И мы вернулись к изначальному вопросу
источник

DS

Dmitry Sergeev in jenkins_ru
Ну вот и выходит что с ямлом работать можно только в пайплайне  jenkins а не внутри job dsl, и максимум что можно сделать - передевать данные внутрь jobDsl степов интерполяцией
источник

HC

Henry Chinaski in jenkins_ru
так ты можешь сделать чекаут, и в степах сделать всё, что надо
источник

DS

Dmitry Sergeev in jenkins_ru
не понимаю что ты имеешь в виду. Ну я могу в степы jobDsl переменные передавать. Аля
def pipeVar = "blabla"
jobDsl scriptText: """
  def test = "${pipeVar}"
....
""""
Но от этого не легче, я бы хотел предавать структированные данные. Да и scriptText не хочу использовать
источник

II

Igor Ivanov in jenkins_ru
всё верно, readYaml — pipeline step, jobDsl — pipeline step, pipelineJob — "dsl step"; хоть и то и другое груви, но друг с другом они не пересекаются

насколько я понимаю, максимум что тут можно придумать — это с помощью pipeline steps отредактировать строку с DSL в scriptText / содержимом targets
источник