Ich benutze Gulp, um eine große .NET-Lösung zu erstellen, die viele NuGet-Pakete verwendet. Dies funktioniert in den letzten sechs Monaten gut mit gulp-nuget-restore, um die Pakete vor dem Kompilieren abzurufen.EBUSY-Fehler beim Aufruf von NuGet.exe von Gulp
Allerdings haben wir kürzlich einen internen NuGet-Server erworben, und als ich das Build-Skript änderte, um es zu verwenden, fing es an, System.Core
zu finden (obwohl alle anderen Pakete von nuget.org immer noch funktionierten). Ich vermute, dass der Schuldige eine veraltete Version von nuget.exe ist, die mit dem Paket gulp-nuget-restore gebündelt ist; Der Build funktioniert wieder, wenn ich ihn manuell mit einer neueren Version überschreibe.
Also, ich versuche jetzt, das Gulp-Skript zu erhalten, um die neueste Version von nuget.exe herunterzuladen und diese für die Paketwiederherstellung zu verwenden (dieses Mal mit Hilfe des gulp-nuget NPM-Pakets). Seltsamerweise funktioniert das auf meinem Rechner einwandfrei, aber auf dem TeamCity-Build-Server schlägt es fehl.
Hier ist der relevante Teil meiner 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/"
})));
Und die Teamcity Build-Log:
[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
Hat die "Fehler: spawnSync ./nuget.exe EBUSY" bedeuten, dass noch etwas hat eine Sperre auf die nuget.exe
Datei, obwohl der Download angeblich beendet wurde?
Vielen Dank im Voraus für alle Vorschläge zur Fehlerbehebung.