繁体   English   中英

如何在 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 environment.sh替换为

. ./environment.sh

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

source是一个bash / ksh /etc 扩展,作为. .

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

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

如果有人想仅使用源代码执行脚本,解决方案是在 ->Manage Jenkins->Configure System 中将“Shell executable”更改为 bash

. ./script.sh . ./script.sh它工作正常,:但你也可以这样做:

sh '''#!/bin/bash
      source /path/to/script.sh
                    
   '''

重要的! : 注意#!/bin/bash是脚本的第一行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM