2017-02-21 11 views
1

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

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: ‘$’ is an unsafe character

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

Работа DSL - V.1.57

Любые предложения please.Thanks.

+0

Не уверен, что касается точной проблемы. Тем не менее, вы должны изменить 'mavenJob ('$ {branchName}')' на 'mavenJob (branchName)' и 'location ('http: // myrepo/svn/repo_name/branches/$ {branchName}')' to 'location («http: // myrepo/svn/repo_name/branches/$ {branchName}») ' – Rao

+0

@Rao: Спасибо, что заглянули в него. Я пошел с вашим предложением, и ниже это проблема. ** ОШИБКА: (сценарий, строка 14) Нет такого свойства: branchName для класса: script ** – voltas

+0

Это потому, что вы не рассматривали ваш скрипт. – Rao

ответ

3

@Rao прав: первое - вы должны изменить:

mavenJob('${branchName}') 

к:

mavenJob(branchName) 

и:

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

к:

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

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

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

@ gkcour: Да сделал глупую ошибку, определил и зафиксировал ее. Спасибо за ваше время. – voltas