2013-11-15 42 views
0

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

bundle install 

现在,我想这将是足够的,但显然bundle不被识别为一个内部或外部命令。除此之外,如果我将RDP放入服务器,如果我从任何地方运行bundle install,那很好,只是通知我没有找到gemfile。

任何想法,如果我错过了一个步骤,或者我这样做是错误的?

回答

2

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

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

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

this answer为适当的文档链接等


编辑#1

我更新该TeamCity的应该照顾我的配置之一,当发现附加值,所以你不要需要设置路径等于自己。上面提到的帖子是TeamCity覆盖值的错误的解决方法,但已被更正。见在鼠标悬停帮助以获取更多信息:

Mouse-over help for Environment Variables


编辑#2

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

  • 创建变量的环境env.Path
  • ,并设置它的价值本身加上新的路径;在我的例子中,C:\Program Files\MySQL\MySQL Server 5.6\bin\;%env.Path%
  • 你做不是需要说env.Path=...如上所列;这就是配置文件的样子。

我测试了这一点,通过执行以下操作:

  1. 创建一个新的项目,没有仓库
  2. 添加命令行构建步骤'回声%ENV。PATH%
  3. 增加了一个命令的步骤调用MySql的mysql --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 +#
+0

请注意,引用的答案在前缀路径和现有PATH之间使用冒号':',但我认为您需要一个分号';'而不是,因为这是Windows用来分隔PATH变量中的不同条目的原因。如果您发现其中一个有效,另一个不可用,请编辑此帖子或添加评论。 – Damon

+0

我试过'env.PATH = C:\ RailsInstaller \ Ruby1.9.3;'但我不确定我是否正确使用它?路径是实际的'ruby.exe'或者......的路径吗? – ediblecode

+0

是的,您应该查找Ruby安装到的位置,而不是安装程序。当你使用RDP时,运行'WHERE bundle'来查看Windows正在使用的路径。我认为应该在所有现代风格的Windows上提供“WHERE”。我没有在我的机器上使用Ruby,否则我会为你测试。我之前刚刚看到了与构建代理的类似错误,所以我认为这就是您所需要的。这也被标记为接受,那是否意味着它对你有用? – Damon