如何在 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 命令执行操作?

sourcebash/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是脚本的第一行