詹金斯与时髦的脚本

时间:2017-03-30 22:18:53

标签: jenkins groovy

我使用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限制吗?

1 个答案:

答案 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来调用此脚本。问题解决了,但如果有人有更好的方法,我会很高兴。