Jenkins Pipeline用于shell脚本的CPS全局lib资源文件

时间:2016-12-05 01:12:15

标签: shell jenkins jenkins-pipeline

我有一个shell脚本,对于Jenkins的许多项目来说很常见,将它放入资源文件夹并按如下所示加载它是正确的:

def script = libraryResource 'build/package_indexes/build_push.sh'

虽然这有效:

sh script

但是一旦我开始使build_push.sh脚本接受参数,它就不起作用,因为script不是文件......

第二个问题是将script变量输出到临时文件(例如

)是否正确
writeFile script '/tmp/tmp.sh'
sh "/tmp/tmp.sh 'cmd_arg'"

1 个答案:

答案 0 :(得分:1)

bash -c会做到这一点。请记住,第一个参数是$ 0而不是$ 1

例如:

我的剧本 -

 echo hello $0!
詹金斯文件中的

 def script = libraryResource 'hello.sh'
 sh "bash -c '$script' world"

结果是你好世界!