如何在Jenkins管道脚本中使用source命令

时间:2016-07-29 17:52:21

标签: linux bash shell jenkins jenkins-pipeline

我最近将bash执行命令重写为Jenkins管道。旧代码就像

...
source environment.sh
//Build
//Test
...

现在我使用管道脚本来包装命令,就像这样

sh '''
    ...
    source environment.sh
    //Build
    //Test
    ...
'''

然而,我收到了一个错误,.../.jenkins/script.sh: line 9: source: environment.sh: file not found。当我尝试less environment.sh时,它会正确显示。所以我怀疑source command中的sh wrap有问题。

在使用管道之前,source environment.sh命令在shell执行中工作正常。所以源代码安装在Jenkins服务器上,似乎管道脚本不知道源命令是什么。

如何在sh wrap block中运行source命令?

3 个答案:

答案 0 :(得分:13)

source environment.sh替换为

. ./environment.sh

请注意第一个点后面有空格。

答案 1 :(得分:7)

source是一个bash / ksh / etc扩展程序,提供更多"实质性" .的同义词。

sh中,如果底层shell是一个(例如.)不支持命令dash,则需要使用source

sh '''
    ...
    . environment.sh
    //Build
    //Test
    ...
'''

答案 2 :(得分:0)

如果某人想要仅使用源代码执行脚本,解决方案是在-> Manage Jenkins-> Configure System

中将“ Shell可执行文件”更改为bash。