Я использую 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()
Спасибо!
Вопрос похож на/полезные ресурсы, которые я пробовал:
- groovy execute with parameters containing spaces
- Groovy executing shell commands
- http://www.joergm.com/2010/09/executing-shell-commands-in-groovy/
- https://fbflex.wordpress.com/2011/11/30/replacing-the-groovy-execute-method-with-one-that-prints-output-while-the-process-is-running/
Это сработало! Теперь он говорит «разрешение отклонено» для доступа к файлу внутри скрипта, но на этот раз он запускает скрипт! Да, скрипт в корне, есть ли что-то особенное, о чем мне нужно беспокоиться? – Kayvar
Скорее нет. Я думал о разрешениях :) – Opal
Alrighty, спасибо! :) – Kayvar