【发布时间】:2013-11-27 22:11:24
【问题描述】:
我已经在我们的 TFS 构建服务器上安装了 npm 和 grunt。我使用 npm install -g grunt-cli 安装了 grunt-cli,然后以我自己的身份登录时能够从命令行运行 grunt deploy。
Out TFS 构建以 tfsservice 用户身份运行,当它尝试执行 grunt deploy 时,它会收到一条错误消息:
'grunt' is not recognized as an internal or external command, operable program or batch file.
所以,当我在构建服务器上以我自己的身份登录时,如果我以 tfsservice 身份运行命令提示符,我会得到同样的错误。所以我尝试从该命令提示符执行 npm install -g grunt-cli ,它看起来已经正确安装并在 C:\Users\tfsservice\AppData\Roaming\npm 中创建了 grunt 文件,但是然后我在运行 grunt deploy 时仍然遇到同样的错误。
所以看起来 grunt-cli 没有为 tfsservice 安装?当我得到 tfsservice %homepath% 时,我看到它设置为 \Windows\system32,而不是预期的 \Users\tfsservice;也许它是一个服务帐户与它有关?
我看到 a similar questions has been asked for using grunt-cli with Team City,但它建议使用 Team City 特定插件。
还有this post 表示他们更改了 Team City 以不同的用户身份运行,然后一切才开始正常运行。不过,将我们的构建更改为以不同于 tfsservice 的用户身份运行对我来说并不是一个真正的选择。
感谢任何建议。谢谢。
【问题讨论】:
-
顺便说一句,我所做的是创建一个运行 BuildAgent 的新用户,而不仅仅是以 tfsservice 身份登录然后安装 grunt。
-
是的,我在链接的帖子中看到了这一点,但我们不想创建另一个用户;我们希望我们的所有构建都作为 tfsservice 运行,因为它已经拥有构建需要执行的各种其他任务以及需要与之交互的服务器的所有权限。