1

PowerShell の代わりにノード実行ステップを使用して不可解に開始された今日までうまく機能していた Visual Studio Team Services のビルド構成があります。ビルド エージェントは Windows マシンで実行されているため、私の知る限り、Node ルートを使用するべきではありません。

誰でもこれについての洞察を提供できますか? 具体的なタスクの 1 つは、NPM および NPM インストール タスクです。

通常、最初の行は次のとおりです。

2015-11-30T17:57:28.3209069Z Executing the powershell script: C:\agent-internal\tasks\NpmInstall\0.1.3\NpmInstall.ps1

そして、次のように切り替わりました。

2015-11-30T19:36:08.2543618Z Set workingFolder to default: C:\agent-internal\tasks\Npm\0.2.0

これにより、リップル エラー効果が発生しています。何か案は?PowerShell スクリプトを強制的に実行できれば、それでよいと思います。

4

1 に答える 1

1

要するに、Node ハンドラーは Windows 上で問題なく実行できます。タスクは、クロスプラットフォーム互換になるように更新されました。

各ビルド タスクは、同じタスクの複数の実装と共に出荷できます。いくつかのハンドラがあります:

  • powershell - 特別な powershell ホスト内で powershell スクリプトを実行する (エージェント 2.0 以降) 廃止された powershell ハンドラ。
  • powershell3 - 特別なモジュールを使用してエージェントとやり取りする新しい powershell ハンドラー。これにより、エージェントの外部でもスクリプトを実行できるようになります (デバッグに便利)。
  • javascript - ノード内で javascript を実行する非推奨のクロスプラットフォーム ハンドラ
  • node - vsts-node-lib を使用して、powershell3 ハンドラーとほぼ同じ方法でエージェントと通信する新しい JavaScript ハンドラー。これはノード 5 またはノード 6 LTS のいずれかです。
    • node10 - ノード ハンドラーと同じ基本インフラストラクチャですが、これは 2018 年 11 月以降、エージェントと一緒に出荷されるノード 10 バージョンで実行されます。

task.json の実行セクションは、実行する実装を定義します。Windows 上のエージェントは、powershell、powershell3、および node をサポートします。特定の handler を優先する特定の「プラットフォーム」セクションがない限り、Node ランナー、powershell3、powershell の順に優先されます。

ビルド エージェント自体が更新され、新しいバージョンのタスクが VSTS のマーケットプレースに発行されると、タスクの作成者はノード実装を含めることを選択して、タスクをクロスプラットフォームにすることができます。ほとんどのタスク作成者は、すべてのプラットフォームでその 1 つの実装を使用して、機能の同等性を確保し、特定のハンドラーが呼び出されたときにのみ現れる問題を防ぐことを好みます。下位互換性の理由から、Task Author は古い実装も出荷する傾向があります。私の場合、古い実装が使用されているときにビルド警告をログに記録し始めました。

于 2016-12-29T12:44:48.137 に答える