从另一个脚本获取脚本对Jenkins不起作用

时间:2017-06-12 14:46:26

标签: bash shell jenkins

我创建了一个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()”。

2 个答案:

答案 0 :(得分:1)

Jenkins在名为workspace的文件夹下运行作业。 您可以通过在“执行shell脚本”构建阶段执行ls -l ${WORKSPACE}来查看其内容,这样您就可以确保您的脚本在那里。

在尝试运行脚本之前,应确保将脚本复制到$ {WORKSPACE}。此外,您可以调用完整的脚本路径,避免每次都复制它们。

答案 1 :(得分:0)

我假设您使用"执行shell脚本"在构建阶段编写脚本。在执行之前,这些脚本将复制到临时目录中。您可以阅读日志以查看此机制。你会看到像[node_name] $ /bin/bash /tmp/jenkins210549930174147290.sh这样的东西,这是Jenkins执行的真实脚本。

因此,当您使用相对路径来源b.sh时,没有任何附加内容,因为它找不到任何脚本。

尝试使用绝对路径来源b.sh