Command line TeamCity生成运行程序无法识别可执行文件
我正在尝试运行一个简单的Command line TeamCity生成运行程序无法识别可执行文件,command-line,gruntjs,Command Line,Gruntjs,我正在尝试运行一个简单的gruntfile.js,作为TeamCity构建的一部分。但是,即使将grunt和grunt cli作为全局节点包安装,TeamCity仍然无法识别它们。我可以在命令行中键入grunt,它可以工作,但当我在TeamCity中通过命令行运行程序或带有参数的可执行文件运行它时,它仍然会给出 “grunt”不被识别为内部或外部命令 我还尝试了安装,这是一个运行grunt脚本的插件,但它也找不到grunt。有什么想法吗?这是一个奇怪且非常烦人的bug,但我终于找到了解决办法。在
gruntfile.js
,作为TeamCity构建的一部分。但是,即使将grunt和grunt cli作为全局节点包安装,TeamCity仍然无法识别它们。我可以在命令行中键入grunt
,它可以工作,但当我在TeamCity中通过命令行运行程序或带有参数的可执行文件运行它时,它仍然会给出
“grunt”不被识别为内部或外部命令
我还尝试了安装,这是一个运行grunt脚本的插件,但它也找不到grunt。有什么想法吗?这是一个奇怪且非常烦人的bug,但我终于找到了解决办法。在
%AppData%\Roaming\npm
目录中,有两个文件:“grunt”和“grunt.cmd”。“grunt”是一个unix文件,“grunt.cmd”应该使用node运行grunt cli应用程序,但它不是。我必须创建一个名为“grunt.bat”(优先于“grunt.cmd”)的新文件,其中包含
node "%~dp0\node_modules\grunt-cli\bin\grunt" %*
现在它起作用了。不知道为什么。我无法得到公认的解决方案。我的问题是TeamCity服务(服务器和代理)是在系统帐户下运行的。顺便说一句,没有“为操作系统的所有用户全局安装npm包”的概念。因此,我:
从那以后,NodeJS、NPM和Grunt任务才开始工作。这里是对克里斯托弗答案的补充(我没有足够的声誉发表评论) 若不想在构建服务器上创建用户,可以编写完整路径来执行npm包。以下是一个命令行运行程序,无需在生成服务器上创建专用用户即可运行:
- 命令可执行文件:
“C:\Program Files\nodejs\node.exe”
- 命令参数:
c:\users\Administrator\AppData\Roaming\npm\node\u modules\weyland\bin\cli.js build
grunt deploy
"C:\Users\tfsservice\AppData\Roaming\npm\grunt.cmd" deploy
要使用此选项,请执行以下操作:
grunt deploy
"C:\Users\tfsservice\AppData\Roaming\npm\grunt.cmd" deploy
我想对您的TeamCity用户做同样的操作也会解决问题。当然,如果您这样做,您必须确保grunt cli安装在所有构建服务器上的相同位置
事实证明,我刚刚错过了重新启动PC的最后一步(以便重新启动TFS服务),然后构建就能够在不指定完整路径的情况下找到grunt
我假设Zeke Lu的回答中显示的修剪过的node.js安装程序说明会说其他用户需要更新其Path环境变量。确保%AppData%\Roaming\npm Path位于windows全局路径变量上,重新启动TeamAgent服务并将正常工作您无需将TeamCity帐户从系统更改为本地帐户。更简单的方法是: 1.[构建代理计算机]确保路径中有节点目录和本地npm程序包目录,例如: C:\Users\'yourUserName'\AppData\Roaming\npm;C:\Program Files\nodejs C:\Users\yourUserName'\AppData\Roaming\npm;C:\Program Files\nodejs
npm安装grunt cli
npm安装-g grunt cli
。您只能执行此步骤一次(在本地计算机上),并将文件更改提交到reponpm安装
powershell-命令“grunt构建”
由于某种原因,在系统帐户上运行的生成代理无法通过cmd访问
C:\Users\yourUserName'\AppData\Roaming\npm
,但通过powershell可以 我知道这个问题有点老了。但我现在也在努力解决同样的问题,却找不到解决办法。。。但最后我做到了。给你
TeamCity构建步骤应包括:
1) 安装grunt cli
命令行
命令:npm安装grunt cli
2) 运行grunt构建任务
命令行
命令:node“node\u模块/grunt cli/bin/grunt”构建
这两种情况下的工作目录都应该是grounfile.js所在的位置。您应该在安装NPM后重新启动TeamCity构建代理。实际上,这可能是一个比我的更好的解决方案。好发现!另请看:我可以验证重新启动使这个问题从我身上消失了,现在一切都按照预期工作,没有任何问题。只是把这个扔出去,对我来说,Nodejs安装程序为每个用户安装了npm,但我只是需要重新启动才能让环境变量对其他用户有效。我不知道为什么会被否决,事实上我就是这么做的。影响最小的东西。。Thanks我不相信%AppData%在全局环境变量中工作(在服务器2019 1809上测试)-它需要在用户环境路径变量中。我从用户路径变量中获取路径“C:\Users\\AppData\Roaming\npm”,并将其添加到系统路径变量中。然后,我必须使用windows应用程序重新启动TeamCity构建代理服务。