TFS ビルド サーバーに npm と grunt をインストールしました。npm install -g grunt- cli を使用して grunt-cli をインストールした後、自分としてログインしたときにコマンドラインからgrunt deployを実行できました。
ただし、 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% を取得すると、予想される\Users\tfsserviceではなく、\Windows\system32に設定されていることがわかります。多分それはサービスアカウントであることがそれと関係がありますか?
Team City で grunt-cli を使用することについて同様の質問が寄せられているようですが、Team City 固有のプラグインの使用が推奨されています。
Team City の実行を別のユーザーとして変更したところ、すべてが適切に機能し始めたというこの投稿もあります。ただし、ビルドをtfsserviceとは別のユーザーとして実行するように変更することは、私にとって実際にはオプションではありません。
任意の提案をいただければ幸いです。ありがとう。