我使用groovy获取一些参数来在jenkins中运行作业。
我的问题是为什么脚本A的作品和B和C不是
A
def sout = new StringBuilder(), serr = new StringBuilder()
def proc = 'ls -D --format=single-column /path/folder'.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
println "out> $sout err> $serr"
return sout.tokenize()
B \\是逃避\
def proc = 'find /path/folder/ -type f \\( -iname \\*.ear -o -iname \\*.war \\)'.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
println "out> $sout err> $serr"
return sout.tokenize()
C script.sh返回文件列表
def sout = new StringBuilder(), serr = new StringBuilder()
def proc = '/scripts/script.sh'.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
println "out> $sout err> $serr"
return sout.tokenize()
从groovy或shell命令运行脚本有一些jenkins限制吗?
答案 0 :(得分:0)
经过多次尝试,我可以做到这一点。
if (Origem.equals('FILE')) {
def cmd = ["/bin/bash","-c","/opt/scripts/SearchPackage.sh"]
def sout = new StringBuffer()
def serr = new StringBuffer()
def proc = cmd.execute()
proc.consumeProcessOutput ( sout, serr )
proc.waitForProcessOutput ()
return sout.tokenize()
}
Groovy没有将//字符识别为' /'的转义。我只是决定将所有内容放在shell脚本中并使用groovy来调用此脚本。问题解决了,但如果有人有更好的方法,我会很高兴。