TFS Build无法找到Grunt

dea*_*dog 6 tfs node.js npm grunt-cli

我在我们的TFS构建服务器上安装了npm和grunt.我使用npm install -g grunt-cli安装了grunt-cli,然后在以我自己的身份登录时能够从命令行运行grunt deploy.

Out TFS版本作为tfsservice用户运行,当它尝试执行grunt部署时,它会收到一条错误消息:

'grunt' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

所以,当我在构建服务器上以我自己的身份登录时,如果我将命令提示符作为tfsservice运行,我会得到相同的错误.所以我尝试从命令提示符下执行npm install -g grunt-cli,它看起来已经正确安装并在C:\ Users\tfsservice\AppData\Roaming \npm中创建了grunt文件,但是后来我仍然得到了同样的错误当运行grunt部署时.

所以看起来grunt-cli没有为tfsservice安装?当我得到tfsservice%homepath%时,我看到它被设置为\ Windows\system32,而不是预期的\ Users\tfsservice ; 也许这是一个服务帐户与它有关?

我看到类似的问题已被要求在团队城市中使用grunt-cli,但它建议使用Team City特定的插件.

还有这篇帖子说他们改变了Team City作为一个不同的用户运行,然后一切都开始正常工作.尽管如此,将我们的构建更改为以不同于tfsservice的用户身份运行并不是一个真正的选择.

任何建议表示赞赏.谢谢.

dea*_*dog 7

tfsservice身份登录并运行npm install -g grunt-cli后,它将所有grunt文件放在C:\ Users\tfsservice\AppData\Roaming \npm中,但找不到C:\ Users\tfsservice\AppData \漫游\npm\grunt.cmd文件,直到我将C:\ Users\tfsservice\AppData\Roaming \npm添加到系统路径; 您可能只为tfsservice用户的变量创建一个新的Path变量,但我希望它在以其他用户身份登录时也可以工作.

在此输入图像描述

一旦我做了那个grunt部署工作,当我手动登录为tfsservice并打开一个新的命令提示符,但当实际的TFS Build执行构建为tfsservice时仍然无法工作.起初我只是修改了我的构建过程,通过使用其完整路径从命令行调用grunt.cmd,如下所示:

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

并确保我在所有构建机器上运行npm install -g grunt-cli作为tfsservice,以确保grunt存在于每个构建服务器上的tfsservice用户的AppData目录中.这有效,但更多的是解决方法而不是修复.

事实证明最后一步是我不得不重新启动TFS Build服务器.一旦我做了那个grunt部署按照构建的预期工作,所以我不需要再指定完整路径:)只需重新启动tfsservice可能已经足够了,但我只是重新启动PC才能安全.