5

TeamCity 構成の最後の部分を配置するのに深刻な問題があります。

次のコマンドを実行する powershell ステップがあります。

& npm install
& grunt build

次の出力を記録します。

Build (Powershell) (1s)
[13:18:08]PowerShell Executable: C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
[13:18:08]Working directory: C:\BuildAgent\work\6a434ee5d01fd0d9
[13:18:08]PowerShell arguments: [-NonInteractive, -ExecutionPolicy, ByPass, -File, C:\BuildAgent\temp\buildTmp\powershell8407335260182621582.ps1]
[13:18:09]Error: ENOENT, stat 'C:\Windows\system32\config\systemprofile\AppData\Roaming\npm'
[13:18:09]
[13:18:09]grunt-cli: The grunt command line interface. (v0.1.13)
[13:18:09]Process exited with code 0

これは既知の問題であることがわかりましたが、これまでのところ、どの解決策もうまくいきませんでした。

私のセットアップは次のとおりです。Azure に 2 つの仮想マシンがbuildあり、agent. どちらも同じ AD ドメイン に接続されており、そこには「標準」クラス (つまり、管理者ではない)domainのユーザー がいます。domain\teamcityuserこのユーザーは、ビルド サーバー (buildインスタンス上) とビルド エージェント (インスタンス上) の両方を実行しagentます。

私は成功せずにこれらのことを試しました:

  • エラー メッセージに示されているディレクトリを作成し、そのディレクトリへのdomain\teamcityuserフル コントロール アクセス権があることを確認します。
  • npm配下にディレクトリを作成するC:\Users\teamcityuser\AppData\Roaming
  • C:\Windows\System32\config\SystemProfile\.npmrc内容を含むファイルの作成prefix=C:\npm-global、および後者のフォルダーの作成
  • npm cache cleanビルドを実行する前に実行する
  • npmによるグローバルパッケージのインストールnpm install -g npm

これを機能させるために、これ以上何を試みることができますか?


そして、XYの問題を回避するために、ここに私の実際の問題があります:

私は、この TeamCity のインストール、Octopus Deploy 経由、およびホスティング サーバーへの CI セットアップを含む .NET Web API プロジェクトを持っています。API を使用する Web SPA のコードを含む github リポジトリもあります。スパは で構築されgrunt build、その後、dist展開する必要があるすべてのフォルダーがあります。

CI アーキテクチャを可能な限り再利用して、クライアントも展開したいと考えています。

4

1 に答える 1

5

実行可能ファイルへのパスに が含まれているSysWOW64場合、これは x32 Powershell であるため、 にある x32 システム プロファイル パスを参照しC:\Windows\sysWOW64\config\systemprofileます。したがって、回避策を実装するには、そのパスをベースとして使用する必要があります。たとえば、C:\Windows\sysWOW64\config\systemprofile\AppData\Roaming\npmプレーンではなくフォルダーを作成しますC:\Windows\system32\config\systemprofile\AppData\Roaming\npm

于 2015-07-10T14:02:03.723 に答える