我正在尝试在TeamCity中作为构建的一部分运行一个简单的gruntfile.js
。然而,即使安装了全局的node包grunt和grunt-cli,TeamCity仍然无法识别它们。我可以在命令行中输入grunt
并且它可以正常工作,但是当我通过命令行运行它或者通过参数运行可执行文件时,TeamCity仍然会给出以下错误:
'grunt'不是内部或外部命令
我还尝试安装TeamCity.Node,这是一个用于运行grunt脚本的插件,但它也找不到grunt。任何想法?
我正在尝试在TeamCity中作为构建的一部分运行一个简单的gruntfile.js
。然而,即使安装了全局的node包grunt和grunt-cli,TeamCity仍然无法识别它们。我可以在命令行中输入grunt
并且它可以正常工作,但是当我通过命令行运行它或者通过参数运行可执行文件时,TeamCity仍然会给出以下错误:
'grunt'不是内部或外部命令
我还尝试安装TeamCity.Node,这是一个用于运行grunt脚本的插件,但它也找不到grunt。任何想法?
我不能让被接受的解决方案起作用。 对我而言,问题在于TeamCity服务(服务器和代理)正在系统帐户下运行。 据我所知,“全局安装npm软件包供操作系统的所有用户使用”这一概念不存在。 所以我:
从那里开始,NodeJS、NPM和Grunt任务就开始工作了。
这是对Christopher答案的补充(我没有足够的声望来进行评论)。
如果您不想在构建服务器上创建用户,您可以编写执行npm包的完整路径。以下是一个命令行运行程序,可在不创建专用构建服务器用户的情况下运行Weyland:
"C:\Program Files\nodejs\node.exe"
c:\users\Administrator\AppData\Roaming\npm\node_modules\weyland\bin\cli.js build
顺便说一句,Node.js安装程序似乎有另一种解决方案。不幸的是,它被删减了!
以下是Node.js安装程序的屏幕截图:
所以我从这个使用中进行了更改:
grunt deploy
要使用这个:
"C:\Users\tfsservice\AppData\Roaming\npm\grunt.cmd" deploy
在安装NPM后,您应该重启TeamCity Build Agents。
我知道这个问题有点老了。但最近我也遇到了同样的问题,一直找不到解决方法……但最终我找到了。以下是解决方法。
TeamCity构建步骤应该包括:
1)安装grunt-cli 命令行 命令:npm install grunt-cli
2)运行grunt构建任务 命令行 命令:node "node_modules/grunt-cli/bin/grunt" build
两种情况的工作目录都应该是你的gruntfile.js所在的位置。
您不需要将TeamCity帐户从系统更改为本地{{link1:像Christoper写的那样}}。这是更简单的方法:
1. [构建代理机器] 确保您的PATH中有node目录和本地npm软件包目录,例如:
C:\Users\'yourUserName'\AppData\Roaming\npm;C:\Program Files\nodejs
npm install grunt-cli
npm install -g grunt-cli
。您只需执行此步骤一次(在本地计算机上),然后提交文件更改到存储库npm install
powershell -Command "grunt build"
由于某些原因,以系统帐户运行的构建代理无法通过cmd访问C:\Users\'yourUserName'\AppData\Roaming\npm
,但可以通过powershell访问。
node "%~dp0\node_modules\grunt-cli\bin\grunt" %*