在cloudbees jenkins中保留进程之间的$PATH

在cloudbees jenkins中保留进程之间的$PATH,path,jenkins,cloudbees,Path,Jenkins,Cloudbees,云蜂上的詹金斯- 我有两个shell脚本: 1-设置$PATH以包括 /scratch/jenkins/addons/ruby/ruby-2.0.0-p247-x86_64/bin 2-回声$PATH From script 1: + /scratch/jenkins/addons/ruby/ruby-2.0.0-p247-x86_64/bin:/scratch/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node

云蜂上的詹金斯- 我有两个shell脚本:

1-设置
$PATH
以包括

/scratch/jenkins/addons/ruby/ruby-2.0.0-p247-x86_64/bin

2-回声
$PATH

From script 1:  + /scratch/jenkins/addons/ruby/ruby-2.0.0-p247-x86_64/bin:/scratch/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodeJS_Install/bin:/opt/jdk/latest/bin:/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/opt/maven/latest/bin:/opt/ant/latest/bin:/opt/android/android-sdk-linux/tools:/opt/gradle/latest/bin:/home/jenkins/bin:/opt/jdk/jdk.latest/bin
+ sh/echo_path.sh
From script 2:  + /scratch/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodeJS_Install/bin:/opt/jdk/latest/bin:/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/opt/maven/latest/bin:/opt/ant/latest/bin:/opt/android/android-sdk-linux/tools:/opt/gradle/latest/bin:/home/jenkins/bin:/opt/jdk/jdk.latest/bin

如您所见,脚本2已将脚本1生成的ruby条目丢失到
$PATH
。为什么会发生这种情况?当它影响后续的构建步骤时,是否可以停止这种情况

我认为最好的方法是使用envinject插件为整个构建设置环境变量。Shell脚本构建步骤只是常规的Shell脚本。他们无法将环境变量导出到其父进程。

您可以将EnvInject插件用于最初请求的目的。发件人:

将变量作为生成步骤注入,该步骤是从上一个生成步骤填充的文件中获取的


谢谢,但问题是我正在从shell脚本安装ruby&compass,因为它们需要在更深层的gradle构建中使用,所以envinject插件不会有帮助,因为ruby每次都是在cloudbees中安装的。我知道ruby&compass是通过shell脚本安装的,但是由于您提前知道它们的路径,我不明白为什么您不能将它们添加到$PATH。@感谢您的输入,但绝对引用是我希望避免的一个选项(通过您在下游脚本中的方法),因为如果cloudbees要继续更改任何内容,它会破坏构建过程-更希望了解发生这种情况的原因。。