В Jenkins, используя плагин Job DLS, я пытаюсь подготовить один скрипт, который будет создавать задания, настроенные для разных сред (dev и preprod). Зависит от того, в каких средах должно выполняться это задание, нужны разные параметры.
В этой ситуации, как кратчайшим образом определить, что параметры среды разработки включают в себя те же параметры, что и параметры preprod, плюс дополнительно, т. Е. Еще 2?
Пример кода, который я использую, представлен ниже.
def environments = ["DEV", "PREPROD"]
def names = ["name1", "name2", "name3"]
def jobParameters = {
string {
name("browser")
defaultValue("CHROME")
description("Browser on which one tests will run")
trim(true)
}
string {
name("parameter1")
defaultValue("")
description("")
trim(true)
}
}
def jobParametersDev = {
jobParameters
string {
name("parameter2")
defaultValue("")
description("")
trim(true)
}
string {
name("parameter3")
defaultValue("")
description("")
trim(true)
}
}
def createJob(name, env, runCommand, jobParameters) {
job("Job-${-> name}-${-> env}") {
description("My first job for ${-> name}")
parameters(jobParameters)
steps {
shell {
command(runCommand)
}
}
}
}
for (name in names) {
for (env in environments) {
if (env == 'DEV') {
def runCommand = "python35 -u ./TestSuite-${-> name}.py %parameter1% %parameter2%,%parameter3% %browser%"
createJob(name, env, runCommand, jobParametersDev)
} else {
def runCommand = "python35 -u ./TestSuite-${-> name}.py %parameter1% ${-> env} %browser%"
createJob(name, env, runCommand, jobParameters)
}
}
}
Подводя итог - последнее, что я попробовал, это:
def jobParametersDev = {
jobParameters
...
}
Но это не работает ... Видны только значения для jobParametersDev.
Как добавить эти значения? Если это не нужно, я не хочу удваивать один и тот же код.
Буду очень признателен за любую помощь.