2016-11-04 2 views
4

Wir verwenden den gehosteten Build-Agent auf VSTS, um unseren ASP.NET-Core-Code für den Azure App-Dienst zu erstellen und zu veröffentlichen.WebPack auf VSTS Hosted Build

Meine Frage ist: Können wir WebPack ausführen, um Front-End-Aufgaben auf diesem gehosteten Build auf VSTS zu behandeln, oder müssen wir es manuell machen, bevor wir den Code in unser Repository einchecken?

Update: Ich bin das neue ASP.NET Core-Build (Vorschau) Vorlage verwendet wird, die auf VSTS verfügbar ist - siehe unten:

enter image description here

Hier sind die Schritte - aus dem Kasten heraus :

enter image description here

+0

Wie starten Sie WebPack? Build vNext ist sehr anpassbar, Sie können bei Bedarf powershell von cmd-Aufrufen hinzufügen. – DaveShaw

+0

@DaveShaw Ich habe den ursprünglichen Post aktualisiert. Ich verwende den ASP.NET Core Build, der auf VSTS verfügbar ist. Sie sagen, ich kann einfach einen neuen Schritt hinzufügen, der ein PowerShell-Skript ausführt. In meinem Fall würde ich den zweiten Schritt machen, d. H. Nach der Wiederherstellung, aber vor dem Build. – Sam

+0

Ja, das würde funktionieren. Es könnte einen anderen Weg geben, es in die Veröffentlichungsaufgaben der.NetCore in der project.json, aber ich weiß nicht, wie das geht, meine .NET Core App tut es kostenlos :) – DaveShaw

Antwort

0

Webpack ist definitiv kein First-Class-Objekt für VS2015 und VSTS. Das Rationalisieren des Webpacks für CI/CD war in meinem Fall ein echtes Problem, besonders als das Webpack hastig eingeführt wurde, um schreckliche Leistungsprobleme mit einem großen monolithischen SPA (ASP.NET 4.6, Kendo, 15.000 Dateien, 2000 Ordner) zu lösen. Kurz gesagt, nachdem ich viele Szenarien getestet hatte, um sicherzustellen, dass frisch neu erstellte Pakete in der IIS- und Azure-Webanwendung landen, habe ich einen Build mit zwei Durchgängen erstellt. Die Reihenfolge der VSTS-Aufgaben ist wie folgt: npm install global, npm install lokal, npm webpack install lokal, npm webpack install global, build pass 1, webpack, build pass 2, etc ... Dies funktioniert mit gehosteten und privaten Agenten, die bereitstellen Sie geben den richtigen Pfad für das Webpack an, da das Webpack an einem anderen Speicherort in host und in private installiert ist (es wurde keine Möglichkeit gefunden, den webpack-Installationsspeicherort aus Konsistenzgründen auszuwählen). Ich verbrenne alles bevor ich den Build starte. Auch müssen Sie diese in VS2015 Lösung tun: (1) entladen "gebaut" Ordner und (2) Hinzufügen Inhalt Include = "Built \ StarStar" in Projektdatei. Die „gebaut“ Ordner enthalten das Bündel und grau dargestellt erscheinen sollen, sonst mehr schlechte Überraschungen und Instabilitäten mit ...

Errichten-Pass # 2 Aufgabe kann in VSTS BUILD beschäftigen die frischen Bündel erzeugt durch Build- sammeln Pass # 1 und fügt sie automatisch in das zu veröffentlichende Paket ein.

Ohne einen zweiten build-pass ist das Sammeln der Bundles und deren Zusammenführung im Zip-Paket ein Albtraum, besonders wenn Sie 15.000 Dateien zum Entpacken und dann zum erneuten Zippen haben (300 ms pro Datei !!). Ich habe keine Dateizusammenführungsfunktion gefunden, die ich problemlos in VSTS verwenden könnte.

Ich habe meine Ohren zu hören auf jemanden zu hören mit einem effizienteren CI/CD-Schema für Webpack. In der Zwischenzeit funktioniert mein 2-Pass-Build-Workaround einwandfrei, aber langsam.

Ich gehe davon aus, dass die Fortschritte mit ASP.NET-Kern, Angular 2 und Webpack in die Lösung elegant gehen wird.

Verwandte Themen