Gulpを使用して、多数のNuGetパッケージを使用する大規模な.NETソリューションを構築しています。これは、コンパイルする前にパッケージを取り出すために、gulp-nuget-restoreを使って過去6ヶ月間うまくいっています。GulpからNuGet.exeを呼び出すときのEBUSYエラー
しかし、私たちは最近、内部のNuGetサーバーを取得しました。これを使用するようにビルドスクリプトを修正すると、System.Core
が見つかりませんでした(nuget.orgの他のすべてのパッケージはまだ機能しています)。私は、犯人がgug-nuget-restoreパッケージにバンドルされている古いバージョンのnuget.exeだと思う。手動で新しいバージョンで上書きすると、ビルドは再び動作します。
これで、最新のバージョンのnuget.exeをダウンロードし、パッケージの復元に使用するようにGulpスクリプトを取得しようとしています(今度はgulp-nuget NPMパッケージを使用)。不思議なことに、これは私のマシンでは完全に動作しますが、TeamCityビルドサーバーでは失敗します。ここで
は私gulpfile.js
の関連する部分である:
const gulp = require("gulp"),
fs = require("fs"),
nuget = require("gulp-nuget"),
download = require("gulp-download-stream");
const nugetExePath = "./nuget.exe";
gulp.task("download-nuget", done => {
if (fs.existsSync(nugetExePath)) {
return done();
}
return download(
{
file: "nuget.exe",
url: "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
})
.pipe(gulp.dest("."));
});
gulp.task("nuget-restore",
["download-nuget"],
() => gulp.src("./mysolution.sln")
.pipe(nuget.restore({
nuget: nugetExePath,
source: "http://our-internal-proget-server/nuget/Default/"
})));
そしてチームシティービルドログ:
[17:14:41][Step 2/2] Executing D:\TeamCity\buildAgent3\work\88991897ccf08f65\node_modules\.bin\gulp.cmd via wrapping shell script
[17:14:41][Step 2/2] Starting: cmd /c D:\TeamCity\buildAgent3\work\88991897ccf08f65\node_modules\.bin\gulp.cmd --no-color --teamcity.properties.all=D:\TeamCity\buildAgent3\temp\agentTmp\teamcity9135120293826835528.json --teamcity.properties=D:\TeamCity\buildAgent3\temp\agentTmp\teamcity7511878459063399775.json --configuration Release --enableteamcity --buildnumber 1299
[17:14:41][Step 2/2] in directory: D:\TeamCity\buildAgent3\work\88991897ccf08f65
[17:14:44][Step 2/2] [17:14:44] Using gulpfile D:\TeamCity\buildAgent3\work\88991897ccf08f65\gulpfile.js
[17:14:44][Step 2/2] [17:14:44] Starting 'clean'...
[17:14:44][Step 2/2] [17:14:44] Starting 'set-build-number'...
[17:14:44][Step 2/2] [17:14:44] Starting 'download-nuget'...
[17:14:44][Step 2/2] [17:14:44] Downloading https://dist.nuget.org/win-x86-commandline/latest/nuget.exe...
[17:14:44][Step 2/2] [17:14:44] Finished 'clean' after 117 ms
[17:14:45][Step 2/2] [17:14:45] Updating assembly info file 'D:\TeamCity\buildAgent3\work\88991897ccf08f65\SharedAssemblyInfo.cs'...
[17:14:45][Step 2/2] [17:14:45] Setting attribute 'AssemblyVersion' to '1.0.*.1299'.
[17:14:45][Step 2/2] [17:14:45] Setting attribute 'AssemblyVersion' to '1.3.9.1299'.
[17:14:45][Step 2/2] [17:14:45] Setting attribute 'AssemblyFileVersion' to '1.3.9.1299'.
[17:14:46][Step 2/2] [17:14:46] Finished 'set-build-number' after 1.67 s
[17:14:48][Step 2/2] [17:14:48] Downloaded https://dist.nuget.org/win-x86-commandline/latest/nuget.exe after 3.98 s
[17:14:48][Step 2/2] [17:14:48] Finished 'download-nuget' after 4.01 s
[17:14:48][Step 2/2] [17:14:48] Starting 'nuget-restore'...
[17:14:48][Step 2/2] [17:14:48] 'nuget-restore' errored after 5.17 ms
[17:14:48][Step 2/2] [17:14:48] Error: spawnSync ./nuget.exe EBUSY
[17:14:48][Step 2/2] at exports._errnoException (util.js:1026:11)
[17:14:48][Step 2/2] at spawnSync (child_process.js:461:20)
[17:14:48][Step 2/2] at execFileSync (child_process.js:498:13)
[17:14:48][Step 2/2] at Gulp.gulp.task (D:\TeamCity\buildAgent3\work\88991897ccf08f65\gulpfile.js:109:9)
[17:14:48][Step 2/2] at module.exports (D:\TeamCity\buildAgent3\work\88991897ccf08f65\node_modules\orchestrator\lib\runTask.js:34:7)
[17:14:48][Step 2/2] at Gulp.Orchestrator._runTask (D:\TeamCity\buildAgent3\work\88991897ccf08f65\node_modules\orchestrator\index.js:273:3)
[17:14:48][Step 2/2] at Gulp.Orchestrator._runStep (D:\TeamCity\buildAgent3\work\88991897ccf08f65\node_modules\orchestrator\index.js:214:10)
[17:14:48][Step 2/2] at D:\TeamCity\buildAgent3\work\88991897ccf08f65\node_modules\orchestrator\index.js:279:18
[17:14:48][Step 2/2] at finish (D:\TeamCity\buildAgent3\work\88991897ccf08f65\node_modules\orchestrator\lib\runTask.js:21:8)
[17:14:48][Step 2/2] at D:\TeamCity\buildAgent3\work\88991897ccf08f65\node_modules\orchestrator\lib\runTask.js:52:4
[17:14:48][Step 2/2] Process exited with code 1
"エラー:spawnSync ./nuget.exe EBUSYは" ない何かまだことを意味するものダウンロードが完了しているにもかかわらず、nuget.exe
ファイルがロックされていますか?
この問題のトラブルシューティング方法については、事前にお問い合わせいただきありがとうございます。