II
def text = 'pipelineJob($$JOBNAME$$) ...'
def name = (readYaml "config.yml").config.name
jobDsl scriptText: text.replaceAll('$$JOBNAME$$', name)
Size: a a a
II
def text = 'pipelineJob($$JOBNAME$$) ...'
def name = (readYaml "config.yml").config.name
jobDsl scriptText: text.replaceAll('$$JOBNAME$$', name)
DS
DS
II
config
в "идеальном мире" во втором случае?DS
DS
II
repos:
main: https://foo.bar
utils: https://top.kek
parameters {
string {
name('MAIN_REPO_URL')
defaultValue(config.repos.main)
}
}
DS
DS
DS
II
parameters {которая раскрывается в
// $$PIPELINE_WITH_DIFF_PARAMETERS$$
}
parameters {, и теперь в те шаблоны хочется параметры вроде
string{ name('foo'); value('bar') }
string{ name('top'); value('kek') }
}
PIPELINE_WITH_DIFF_PARAMETERS(fooValue: 'barrr')
, и чтобы "значения" тех шаблонов хранились не в том репозитории который jobDsl """..."""
делает, а в том из которого он файл с содержимым dsl берёт...II
//no def here, so the variable is visible from every part of groovy
CONFIG = // readYaml "dsl_parameters.yaml"
[
jobname: 'my_job',
parameter : [
value: 123,
],
]
def original_dsl = // readFile "dsl.groovy"
'''pipelineJob('${CONFIG.jobname}') {
parameters {
string {
name('parameter')
value('${CONFIG.parameter.value}')
}
}
}
'''
println original_dsl
def quoted_dsl = ' """ ' + original_dsl + ' """ '
println quoted_dsl
def evaluated_dsl = evaluate quoted_dsl
println evaluated_dsl
jobDsl scriptText: evaluated_dsl
DS
def config = readYaml file: 'config.yaml'а в seed.groovy
writeJSON file: 'config.json', json: config
jobDsl targets: 'seed.groovy'
def config = new groovy.json.JsonSlurper().parseText(readFileFromWorkspace('config.json'))перегоняем ямлики в джсоны =)
// some job dsl code
// теперь свободно можно использовать структуры из config: config.jobs.each { job -> ...
...
DS
DS
DB
DB
II
DS
DS