我最近将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命令?
答案 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。