我有一个 Jenkins 管道作业,其中我使用名为 setup.sh 的 bash 脚本配置我的环境,如下所示:
#!/bin/bash
export ARCH=$1
echo "architecture = " ${ARCH}
在 Jenkins 管道脚本中,我使用以下命令调用 setup.sh 脚本:
def lib_arch='linux-ubuntu-14.04-x86_64-gcc4.8.4'
sh ". /opt/setup.sh ${lib_arch}"
不幸的是,似乎NO变量被传递给 setup.sh 脚本,并且 echo ${ARCH} 返回一个空字符串!
我尝试这样做:
sh "源/opt/setup.sh ${lib_arch}"
并且这也会失败并显示“未找到源”消息。
我还尝试将脚本的第一行更改为
#!/bin/sh
但这没有帮助。那么如何将参数传递给 Jenkins 管道脚本中的 bash 脚本呢?
感谢您的帮助。
更新:
Bert Jan Schrijve 在此线程中建议了一种解决方法(见下文):
sh "bash -c \" source /opt/setup.sh ${lib_arch}\""
如果您使用带有三个撇号的多行 shell 脚本,则必须使用以下语法:
sh '''
echo '''+varToPrint+'''
other commands...
'''
(from https://medium.com/devopslinks/a-hacky-hackers-guide-to-hacking-together-jenkins-scripted-pipelines-part-3-aca73bd33eaa https://medium.com/devopslinks/a-hacky-hackers-guide-to-hacking-together-jenkins-scripted-pipelines-part-3-aca73bd33eaa)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)