5

TeamCity サーバーでのプロジェクトのビルドを自動化しようとしています。gruntタスクの定義と構成に使用しています。これはローカルでうまく機能します。それでも、TeamCity (Windows Server 2008 で実行) をgrunt 実行可能ファイルとして認識させるのに問題があります。ビルドはgrunt利用できないため、呼び出されると失敗します。

サーバーにgrunt-cliインストールしてあり、ssh経由でログインすると実行できます(そのようにトリガーすると、ビルドスクリプトも成功します)。

私はnpm installgrunt を呼び出す前に実行しており、私のような命令grunt-cliを使用して強制的にインストールしようとしました:preinstallpackage.json

{
  "name": "someName",
  "version": "0.0.1",
  "private": true,
  "scripts" : {
    "preinstall" : "npm install grunt-cli -g"
  },
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-jshint": "~0.6.3",
    "grunt-contrib-less": "~0.8.1",
    "grunt-contrib-watch": "~0.5.3",
    "grunt-contrib-requirejs": "~0.4.1",
    "grunt-strip": "~0.2.1",
    "grunt-bump": "0.0.11"
  } 
}

npm が grunt-cli をインストールしていることがわかりますが、次のステップで grunt を使用できません。

また、それをファイルにラップするbatか、複数のビルドステップを使用して、依存関係をインストールして grunt タスクを実行しようとしました。

誰かがこれについて意見を持っていますか?

4

2 に答える 2

6

TFS Build エージェントに grunt-cli を実行させようとしたときに、同じ問題が発生しました。最後に、grunt-cli 実行可能ファイルへのフル パスを使用するようにビルド プロセスを変更しました。

だから私はこれを使用することから変更しました:

grunt deploy

これを使用するには:

"C:\Users\tfsservice\AppData\Roaming\npm\grunt.cmd" deploy

これは単なる回避策であり、真の修正ではないことは承知していますが、問題を解決するには十分なはずです。これが役立つことを願っています。

- アップデート -

「C:\Users\tfsservice\AppData\Roaming\npm」(grunt.cmd ファイルがある場所) をシステム パスに追加し、ビルド サーバーを再起動するだけで、正しく動作するようになりました。tfsservice はユーザーであり実行中のサービスでもあるため、再起動が必要でした。サービスを再起動するだけで十分かもしれませんが、私はそれをテストしていません。

このgrunt deployを実行した後、ビルドで期待どおりに機能しました。

于 2013-11-15T16:02:40.733 に答える