0

我正在 Team City 上设置我的第一个 Ruby 项目,该项目托管在 Windows Server 上,但我遇到了问题。现在,因为服务器可能没有安装所需的 gem,我添加了一个命令行构建步骤:

bundle install

现在我认为这已经足够了,但显然bundle不被识别为内部或外部命令。除了,如果我 RDP 进入服务器,如果我bundle install从任何地方运行,那很好,只是通知我没有找到 gemfile。

如果我错过了一步,或者我正在以错误的方式解决这个问题,有什么想法吗?

4

1 回答 1

2

这很可能是 TeamCity 找不到 ruby​​ 可执行文件路径的问题。

您可以通过在构建参数部分的构建配置中覆盖 PATH 环境变量的值来解决此问题。

env.PATH=/path/to/ruby;%env.PATH%

有关文档等的正确链接,请参阅此答案。


编辑#1

我注意到在更新我的一项配置时,TeamCity 应该负责附加值,因此您不需要将路径设置为等于自身。上面提到的帖子是针对 TeamCity 覆盖值的错误的解决方法,但已得到纠正。有关更多信息,请参阅鼠标悬停时的帮助:

环境变量的鼠标悬停帮助


编辑#2

我测试了编辑#1,发现情况并非如此。你确实需要

  • 创建环境变量env.Path
  • 并将其值设置为自身加上您的新路径;在我的例子中,C:\Program Files\MySQL\MySQL Server 5.6\bin\;%env.Path%
  • 不需要env.Path=...上面列出的;这就是配置文件的样子。

我通过执行以下操作对此进行了测试:

  1. 创建了一个没有存储库的新项目
  2. 向 `echo %env.Path% 添加了命令行构建步骤
  3. 添加了一个命令步骤来调用 MySqlmysql --help 如果找不到 MySql 这将失败

env.Path然后,我为变量的以下每个设置运行它:

  1. 未添加/更改;TeamCity 按原样报告构建代理的环境变量。
  2. 添加为C:\Program Files\MySQL\MySQL Server 5.6\bin\. TeamCity 仅报告该条目。
  3. 添加为C:\Program Files\MySQL\MySQL Server 5.6\bin\;%env.Path%. TeamCity 会C:\Program Files\MySQL\MySQL Server 5.6\bin\添加到 #1 中显示的构建代理的值。结果就是我们想要的,#1 + #2
于 2013-11-16T16:30:09.793 回答