我创建了一个Jenkins Job和两个shell脚本
b.sh
======
sum()
{
echo "Sum called from b.sh"
}
a.sh
=======
echo "From Script A"
. ./b.sh
sum // Calling function of b.sh
当我执行Jenkins Job'脚本a.sh'被调用时,我希望'b.sh发生'的来源
然而,Jenkins对函数'sum'的错误如下
a.sh: line xx: sum: command not found
请建议任何解决方案来克服这个问题
我将'b.sh'强加给$ WORKSPACE并在'b.sh'添加了'set -vx'并且发生了采购。
问题在于从'a.sh'调用函数“b.sh::sum()”。
答案 0 :(得分:1)
Jenkins在名为workspace的文件夹下运行作业。
您可以通过在“执行shell脚本”构建阶段执行ls -l ${WORKSPACE}
来查看其内容,这样您就可以确保您的脚本在那里。
在尝试运行脚本之前,应确保将脚本复制到$ {WORKSPACE}。此外,您可以调用完整的脚本路径,避免每次都复制它们。
答案 1 :(得分:0)
我假设您使用"执行shell脚本"在构建阶段编写脚本。在执行之前,这些脚本将复制到临时目录中。您可以阅读日志以查看此机制。你会看到像[node_name] $ /bin/bash /tmp/jenkins210549930174147290.sh
这样的东西,这是Jenkins执行的真实脚本。
因此,当您使用相对路径来源b.sh
时,没有任何附加内容,因为它找不到任何脚本。
尝试使用绝对路径来源b.sh
。