我有一个 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}"
不幸的是,似乎 没有 变量被传递给 setup.sh 脚本,并且 echo \({ARCH} 返回一个空字符串!我尝试改为: sh "source /opt/setup.sh \){lib_arch}” 并且这也失败了,并显示“找不到源”消息。我还尝试将脚本的第一行更改为
#!/bin/sh
但这无济于事。那么如何在 Jenkins 管道脚本中将参数传递给我的 bash 脚本呢?谢谢你的帮助。
更新:Bert Jan Schrijve 在此线程中建议了一种解决方法(见下文):
sh "bash -c \" source /opt/setup.sh ${lib_arch}\""
原文由 NabilG 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您使用带有三撇号的多行 shell 脚本,则必须使用以下语法:
(来自 https://medium.com/devopslinks/a-hacky-hackers-guide-to-hacking-together-jenkins-scripted-pipelines-part-3-aca73bd33eaa )