Laden...

NuGet Pakete (im Rahmen von CI) automatisch erstellen (und deployen)

Erstellt von Abt vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.246 Views
Abt Themenstarter:in
16.830 Beiträge seit 2008
vor 8 Jahren
NuGet Pakete (im Rahmen von CI) automatisch erstellen (und deployen)

Hallo zusammen,

mich interessiert, wie ihr eure NuGet Pakete automatisch bzw. im Rahmen von Continuous Delivery oder Continuous Deployment erstellt.

Macht ihr das über eigene Scripte, über Erweiterungen wie NuGet Packager .. ?

Hintergrund:
Ich selbst möchte gerne viel mehr auf NuGet zur Verfügung stellen; bin jedoch mit den bisherigen Konfigurationen meiner CI relativ unzufrieden und suche neue, bessere Umsetzungsmöglichkeiten - ohne, dass ich die eigentlichen Core-Projekte anfassen muss.

Mi VS2015 soll ja in Q1 2016 das neue DNX basierte "NuGet Package Template" mit Publish-Funktion zur Verfügung stehen.
Aktuell funktioniert das nur leider alles andere als rund und ist nicht produktiv einsetzbar.

Falls eines eurer bestehenden Mechanismen auch noch Semantic Versionierung beachtet; das wäre genial 😉

Bin gespannt auf eure Umsetzungen.
Grüße Abt

74 Beiträge seit 2014
vor 8 Jahren

Hallo,

ich verwende als Client nur noch Paket. Das Tool hat ein viel besser durchdachtes Konzept was SemVer angeht, schon beim Definieren der Abhängigkeiten. Beim Packen werden diese Definitionen auch gleich in die generierte .nuspec übernommen, also wenn du z. B. sagst nuget Foo ~> 2.0, dann bekommst du beim Packen [2.0,3.0).

Das (automatische) Generieren der paket.template (Äquivalent der .nuspec) ist ebenfalls einfacher, weil es ein simples Plain-Text-Format ist.

Zum Pushen hat es auch einen Befehl, also braucht man keine NuGet.exe mehr 😁

Als Build-Tool benutze ich FAKE, das hat auch einen Helper für Paket. Für NuGet und andere Tools, die so in der .NET-Community geläufig sind, übrigens auch.

Grüße

Abt Themenstarter:in
16.830 Beiträge seit 2008
vor 8 Jahren

Ich hab mir nun Paket und FAKE angeschaut; kommt nur leider meinem Bedarf nicht ganz dem nach, das ich gerne möchte.
Werde mich aber dahingehend mit Steffen Forkmann, der Macher der beiden Projekte nochmal unterhalten, ob es evtl. doch geht - mit weniger Aufwand und geringeren Einstiegshürden. Er hat mir hier seine Hilfe angeboten.
Das ganze soll möglichst einfach sein, da damit auch Leute arbeiten sollen, die keine große Erfahrung mit Buildsystemen oder CI haben und das quasi der erste Berührungspunkt bei dem Thema sein wird.
Die Sache mit den "vielen Befehlen" und F# und der dementsprechenden Hürde könnte es leider komplizierter machen, als es gewünscht ist - auch wenn es in Sachen Leistung natürlich weit oben ist.

Habe heute jedenfalls den verregneten Tag ausgenutzt und mehrere Dinge ausprobiert.
Mit folgender Kombination bin ich nun sehr zufrieden, werde hierzu eine Anleitung schreiben und mal die frischen Kollegen drauf los lassen.

Das führende System ist hierbei Visual Studio Online (TFS ist analog); die Quelle kann GitHub, VSO oder ein anderes passendes SCM sein.
Hier wird ein Build erstellt mit den zusätzlichen Build-Steps "Publish build artifacts", "NuGet Packager" und "NuGet Publisher".

Je nach Trigger (manuell oder bei Commit) wird das Projekt zuerst getestet, dann gebaut und anschließend als NuGet Paket verpackt und automatisiert auf NuGet veröffentlich.
Das einzige, was im Projekt selbst liegen muss, das ist das nuspec-File sowie via MSBuild-Parameter die XML Dokumentationsgenerierung angestoßen werden.

Hat mich jetzt einige Stunden gekostet aber ich bin sehr zufrieden damit.
Vielleicht