В задании dsl не происходит подстановки переменных

Попытка создать новые задания всякий раз, когда в моем репозитории SVN появляется новая запись ветки, а ниже - сценарий.

svnCommand = "svn list --xml http://myrepo/svn/repo_name/branches"
def proc = svnCommand.execute()
proc.waitFor()
def xmlOutput = proc.in.text
def lists = new XmlSlurper().parseText(xmlOutput)
def listOfBranches = lists.list.entry.name

listOfBranches.each(){
  def branchName = it.text()
println "found branch: '${branchName}'"
}

mavenJob('${branchName}'){
  mavenInstallation('M3.3.9')
  logRotator(365, 25, -1, -1)

   scm {
     svn {
       location('http://myrepo/svn/repo_name/branches/${branchName}') {
        credentials('4t4d8ef-p67a-5298-a011-580ghe898a65')
       }
     }
   } 
}

Скрипт может перебирать ветки и печатать имена веток,

найдена ветка: 'feature_01'

но я столкнулся с проблемой при подстановке переменных при создании имени задания и имени ветки svn.

hudson.model.Failure: «$» - небезопасный символ.

Дженкинс - V.2.32

Работа DSL - V.1.57

Любые предложения, пожалуйста. Спасибо.


person voltas    schedule 21.02.2017    source источник
comment
Не уверен насчет точной проблемы. Однако вам следует изменить mavenJob('${branchName}') на mavenJob(branchName) и location('http://myrepo/svn/repo_name/branches/${branchName}') на location("http://myrepo/svn/repo_name/branches/${branchName}")   -  person Rao    schedule 21.02.2017
comment
@Rao: Спасибо, что изучили это. Я согласился с вашим предложением, и проблема ниже. ОШИБКА: (сценарий, строка 14) Нет такого свойства: branchName для класса: script   -  person voltas    schedule 21.02.2017
comment
Это потому, что, если вы посмотрите на свой скрипт, этого не было в области видимости.   -  person Rao    schedule 21.02.2017
comment
@Rao: Не могли бы вы сообщить мне, что нужно сделать, чтобы преодолеть этот сценарий. Спасибо.   -  person voltas    schedule 21.02.2017


Ответы (1)


@Rao прав: сначала нужно поменять:

mavenJob('${branchName}')

to:

mavenJob(branchName) 

а также:

location('http://myrepo/svn/repo_name/branches/${branchName}‌​')

to:

location("http://myrepo/svn/repo_name/branches/${branchName}‌​")

Более того, def branchName = it.text() внутри итерации ограничивает область действия переменной только этой итерацией. Пытаться:

listOfBranches.each() {
  branchName = it.text()
  println "found branch: '${branchName}'"
}
person gkocur    schedule 21.02.2017
comment
@gkcour: Да совершил глупую ошибку, выявил и исправил ее. Спасибо за ваше время. - person voltas; 21.02.2017