如何在 Jenkins 管道脚本中使用 source 命令
How to use source command within Jenkins pipeline script
我最近将 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
时,它显示正确。所以我怀疑 sh wrap
.
中的 source command
有问题
在使用管道之前,source environment.sh
命令在 shell 执行中工作正常。所以源是安装在 Jenkins 服务器上的,似乎管道脚本不知道源命令是什么。
如何在 sh 包装块中对 运行 source 命令执行操作?
source
是 bash
/ksh
/etc 扩展名,作为 .
.
的更“重要”同义词提供
在sh
中,你需要使用.
以防底层shell是一个不支持命令[=11]的(例如dash
) =].
sh '''
...
. ./environment.sh
//Build
//Test
...
'''
将source environment.sh
替换为
. ./environment.sh
请注意第一个点后有一个 space。
如果有人想只使用源代码执行脚本,解决方案是在 ->Manage Jenkins->Configure System
中将“Shell executable”更改为 bash
. ./script.sh
它工作正常!但你也可以这样做:
sh '''#!/bin/bash
source /path/to/script.sh
'''
重要!:注意#!/bin/bash
是脚本的第一行
我最近将 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
时,它显示正确。所以我怀疑 sh wrap
.
source command
有问题
在使用管道之前,source environment.sh
命令在 shell 执行中工作正常。所以源是安装在 Jenkins 服务器上的,似乎管道脚本不知道源命令是什么。
如何在 sh 包装块中对 运行 source 命令执行操作?
source
是 bash
/ksh
/etc 扩展名,作为 .
.
在sh
中,你需要使用.
以防底层shell是一个不支持命令[=11]的(例如dash
) =].
sh '''
...
. ./environment.sh
//Build
//Test
...
'''
将source environment.sh
替换为
. ./environment.sh
请注意第一个点后有一个 space。
如果有人想只使用源代码执行脚本,解决方案是在 ->Manage Jenkins->Configure System
中将“Shell executable”更改为 bash. ./script.sh
它工作正常!但你也可以这样做:
sh '''#!/bin/bash
source /path/to/script.sh
'''
重要!:注意#!/bin/bash
是脚本的第一行