在 Jenkins 上针对同一路径执行不同的软件二进制文件
Different software binary being executed on Jenkins for the same path
我在我的 jenkins 服务器上的两个地方安装了 gems 二进制文件,每个都是不同的版本:
[myserver]$ /opt/chef/embedded/bin/gem --version
2.4.1
[myserver]$ /opt/chefdk/embedded/bin/gem --version
2.4.4
我正在 运行使用以下命令在此詹金斯服务器上工作:/opt/chefdk/embedded/bin/gem inabox
我收到一条错误消息:
ERROR: While executing gem ... (Gem::CommandLineError)
Unknown command inabox
然而,当我从命令行运行执行相同的命令时,它会识别 inabox
选项。
为了调试,当我从控制台和命令行 运行 此命令 /opt/chefdk/embedded/bin/gem help commands
时,可用的选项不同,控制台输出不包括 "inabox"
选项。
为了确保我使用了正确的二进制文件,我还在作业中导出了二进制路径:PATH=$PATH:/opt/chefdk/embedded/bin
,但这也没有解决任何问题。
我怀疑由于某种原因, /opt/chef/embedded/bin/gem
二进制文件被执行而不是 /opt/chefdk/embedded/bin/gem
,但我不确定如何以及如何解决它。有什么指点吗?
EDIT1
这是 echo $PATH
的输出
这是我通过 Jenkins 控制台 运行 时命令的输出:/opt/chefdk/embedded/bin/gem help commands
这是我通过命令行 运行 时命令的输出:
1) 每次更改环境变量时重新启动 Jenkins
2) 如果 jenkins 在 slave 上执行代码,你需要在你的 Jenkins 设置中定义路径。
我们发现注入到 Jenkins 作业中的 GEM_PATH 变量导致 gem 命令无法按预期工作。为了解决这个问题,我们在构建步骤的 shell 部分的开头添加了“unset GEM_PATH”行。这允许 gem 命令再次识别“inabox”选项并成功上传 gems 到 Ruby Gems 服务器。
我在我的 jenkins 服务器上的两个地方安装了 gems 二进制文件,每个都是不同的版本:
[myserver]$ /opt/chef/embedded/bin/gem --version
2.4.1
[myserver]$ /opt/chefdk/embedded/bin/gem --version
2.4.4
我正在 运行使用以下命令在此詹金斯服务器上工作:/opt/chefdk/embedded/bin/gem inabox
我收到一条错误消息:
ERROR: While executing gem ... (Gem::CommandLineError)
Unknown command inabox
然而,当我从命令行运行执行相同的命令时,它会识别 inabox
选项。
为了调试,当我从控制台和命令行 运行 此命令 /opt/chefdk/embedded/bin/gem help commands
时,可用的选项不同,控制台输出不包括 "inabox"
选项。
为了确保我使用了正确的二进制文件,我还在作业中导出了二进制路径:PATH=$PATH:/opt/chefdk/embedded/bin
,但这也没有解决任何问题。
我怀疑由于某种原因, /opt/chef/embedded/bin/gem
二进制文件被执行而不是 /opt/chefdk/embedded/bin/gem
,但我不确定如何以及如何解决它。有什么指点吗?
EDIT1
这是 echo $PATH
这是我通过 Jenkins 控制台 运行 时命令的输出:/opt/chefdk/embedded/bin/gem help commands
这是我通过命令行 运行 时命令的输出:
1) 每次更改环境变量时重新启动 Jenkins
2) 如果 jenkins 在 slave 上执行代码,你需要在你的 Jenkins 设置中定义路径。
我们发现注入到 Jenkins 作业中的 GEM_PATH 变量导致 gem 命令无法按预期工作。为了解决这个问题,我们在构建步骤的 shell 部分的开头添加了“unset GEM_PATH”行。这允许 gem 命令再次识别“inabox”选项并成功上传 gems 到 Ruby Gems 服务器。