一尘不染

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

jenkins

我在Jenkins的许多项目中都有一个通用的Shell脚本,将其放入resources文件夹并按如下所示加载它是否正确:

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'"

阅读 404

收藏
2020-07-25

共1个答案

一尘不染

bash -c会成功的 只要记住第一个参数是$ 0而不是$ 1

例如:

我的剧本-

 echo hello $0!

在Jenkinsfile中

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

结果就是世界!

2020-07-25