2015-03-25 3 views
3

Я использую Jenkins для запуска сценария на машине linux.Выполнение сценария оболочки с параметрами и параметрами

Когда я запустить это вручную на сервере, он работает:

/bin/bash -c '/some/script MyProduct SomeBranch'

Когда я запустить это с заводной, он не работает.

Я получаю такую ​​же ошибку, как если бы я не передавал параметр «-c», поэтому как-то «-c» не работает.

Вот мой код:

branchName = "SomeBranch" 
configName = "release" 
println "Building for branch "+branchName+" and configuration "+configName 

def chkbranch = { String product, String branch -> mkcmd(product, branch) } 
private def mkcmd (String product, String branch) { 
    // Build the command string to run 
     def cmd = "/bin/bash -c '/some/script "+product+" "+branch+"'" 
     def sout = new StringBuffer() 
     def serr = new StringBuffer() 
    // Run the command 
     println "running "+cmd 
     def proc = cmd.execute() 
     proc.consumeProcessOutput (sout, serr) 
     proc.waitForProcessOutput() 
     println "out> $sout" 
     println "err> $serr" 
     return sout 
} 

chkbranch ("MyProduct", branchName) 

Это правильный путь построить команду в Groovy ?:

def cmd = "/bin/bash -c '/some/script "+product+" "+branch+"'" 
cmd.execute() 

Спасибо!

Вопрос похож на/полезные ресурсы, которые я пробовал:

ответ

3

Попытка выполнить команду следующим образом:

def cmd = ["/bin/bash", "-c", "/some/script", product, branch] 

Вы также можете попробовать:

def cmd = ["/some/script", product, branch] 

если /some/script выполнима - BTW он помещен под корень (/)?

+0

Это сработало! Теперь он говорит «разрешение отклонено» для доступа к файлу внутри скрипта, но на этот раз он запускает скрипт! Да, скрипт в корне, есть ли что-то особенное, о чем мне нужно беспокоиться? – Kayvar

+0

Скорее нет. Я думал о разрешениях :) – Opal

+0

Alrighty, спасибо! :) – Kayvar

Смежные вопросы