无法获得TeamCity Build Step来执行grunt-cli

m90*_*m90 4 teamcity continuous-integration npm gruntjs

我正在尝试在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"
  } 
}
Run Code Online (Sandbox Code Playgroud)

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

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

有人对此有任何意见吗?

dea*_*dog 5

试图让我们的TFS Build代理运行grunt-cli时遇到了同样的问题.最后,我刚刚更改了构建过程,以使用grunt-cli可执行文件的完整路径.

所以我改变了使用它:

grunt deploy
Run Code Online (Sandbox Code Playgroud)

使用这个:

"C:\Users\tfsservice\AppData\Roaming\npm\grunt.cmd" deploy
Run Code Online (Sandbox Code Playgroud)

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

- 更新 -

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

执行此操作后,grunt部署按预期在我们的构建中工作.


Pot*_*Tea 2

您正在 Widnows 服务器上运行 Teamcity 代理吗?Teamcity 有 Node.js/Grunt 插件: https: //github.com/jonnyzzz/TeamCity.Node 据我使用,使用 Teamcity 运行 grunt 没有问题。