5

我正在尝试在 TeamCity 服务器上自动构建我的项目。我grunt用来定义和配置我的任务。这在本地运行良好。然而,我在让 TeamCity(在 Windows Server 2008 上运行)识别grunt 为可执行文件时遇到问题,grunt调用时构建将失败,因为它不可用。

我确实已经grunt-cli安装在服务器上,并且可以在我通过 ssh 登录时执行它(当我以这种方式触发它时,构建脚本也会成功)。

npm install在调用 grunt 之前正在运行,并且还尝试grunt-cli使用preinstallpackage.json喜欢的指令强制安装:

{
  "name": "someName",
  "version": "0.0.1",
  "private": true,
  "scripts" : {
    "preinstall" : "npm install grunt-cli -g"
  },
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-jshint": "~0.6.3",
    "grunt-contrib-less": "~0.8.1",
    "grunt-contrib-watch": "~0.5.3",
    "grunt-contrib-requirejs": "~0.4.1",
    "grunt-strip": "~0.2.1",
    "grunt-bump": "0.0.11"
  } 
}

我可以看到 npm 正在安装 grunt-cli,但 grunt 在下一步中不可用。

我还尝试将其包装到一个bat文件中或使用多个构建步骤来安装和运行 grunt 任务的依赖项。

有人对此有任何意见吗?

4

2 回答 2

6

在尝试让我们的 TFS 构建代理运行 grunt-cli 时,我遇到了同样的问题。最后,我只是将构建过程更改为使用 grunt-cli 可执行文件的完整路径。

所以我改变了使用这个:

grunt deploy

使用这个:

"C:\Users\tfsservice\AppData\Roaming\npm\grunt.cmd" deploy

我知道这只是一种解决方法,而不是真正的解决方法,但它应该足以让你继续前进。我希望这有帮助。

- 更新 -

只需将“C:\Users\tfsservice\AppData\Roaming\npm”(找到 grunt.cmd 文件的位置)添加到我的系统路径,然后重新启动我的构建服务器,我就能让它正常工作。需要重新启动,因为 tfsservice 既是用户又是正在运行的服务;简单地重新启动服务可能就足够了,但我没有测试过。

完成此grunt deploy后,我们的构建按预期工作。

于 2013-11-15T16:02:40.733 回答
2

您正在 Windows Server 上运行 Teamcity 代理吗?有用于 Teamcity 的 Node.js/Grunt 插件:https ://github.com/jonnyzzz/TeamCity.Node 就我所使用的而言,在 Teamcity 中运行 grunt 没有问题。

于 2013-11-11T08:34:19.190 回答