无法运行Jenkins构建 - bundle:“命令未找到”

18
我目前正在尝试运行 Jenkins 构建来执行一些 Cucumber 任务。所有的 gem 都是使用 Bundler 安装的,并存储在 vendor 文件夹中。
但是,当我尝试在“执行 shell”构建步骤中运行 bundle install --deployment 命令时,会出现以下错误:
Started by user anonymous
Building in workspace /Users/Shared/Jenkins/Home/jobs/cukes/workspace
[workspace] $ /bin/sh -xe/var/folders/zz/zyxvpxvq6csfxvn_n0000004000001/T/hudson4461284045505361460.sh
+ bundle install --deployment
/var/folders/zz/zyxvpxvq6csfxvn_n0000004000001/T/hudson4461284045505361460.sh: line 2: bundle: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE

这让我很烦恼!在我的本地机器上运行没有问题,为什么Jenkins看不到我的gems?

任何帮助都将不胜感激!

谢谢, Jon

6个回答

17
在我的情况下,我将这行代码添加到脚本的开头:
#!/bin/bash -l

4
工作了,但为什么? :-) - Sahil Rally
@SahilRally 我不知道。 如果你有答案,请告诉我 :-) - Reza Dehnavi
3
在手册中,它说-l“使bash表现得好像已被调用为登录shell”。所以它在本地机器上为OP工作,因此在添加后,它也可以在Jenkins中工作。 - Sumeet.Jain
救了我的一天 :) - flacko

12

根据您安装Jenkins的方式,它可能作为单独用户运行,通常作为用户jenkins运行。如果您将bundle安装到非标准目录(不在默认PATH中),例如/usr/local/bin,您需要执行以下操作:

  • /usr/local/bin添加到jenkins用户的PATH中(检查~jenkins/.bashrc)或
  • 在Jenkins全局配置(或在从机器上构建时的从机器配置)中配置PATH环境变量或
  • 修改构建脚本以使用完整路径名引用bundle

嗨,我添加了/bin/bash而不是/usr/bin/bash因为它不可用。我正在使用CentOS。 - Chetan kapoor

3
如果bundle已经安装在/usr/local/bin/bundle (可以通过which bundle命令来确定),你可以简单地在/usr/bin目录下添加一个符号链接,方法如下: ln -s /usr/local/bin/bundle /usr/bin/bundle

2

需要验证的第一件事:

  • 确保 bundle 已经安装在 Jenkins 运行的机器上。
  • 如果已经安装,则确保它位于 Jenkins 运行的用户路径下。

(要验证路径/环境: 插入 shell 构建步骤来运行 env)


1
对我来说,最初是通过war文件安装的,因为入门指南推荐这种方式。然而,用户手册更清楚地表明,可能有更好的方法来安装Jenkins
我最终通过以下步骤在macOS上卸载了Jenkins的WAR文件:
  1. 删除.war文件。
  2. 删除~/.jenkins目录。
然后我通过home-brew重新安装bundle开始工作了。

0

您可以通过运行 which bundle 命令来查看 bundle 安装的位置,并从那里运行 bundle 命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接