NuGet-Pakete automatisch mit AppVeyor veröffentlichen

Wir haben uns Appveyor als Build-Server für Continuous Integration angeschaut. Die Nuget-Kommandozeile bietet Potential zur Automatisierung. In diesem Artikel sehen wir uns an, wie Appveyor automatisch die Pakete veröffentlicht.
Voraussetzung
Damit wir Nuget einrichten können, müssen bestimmte Voraussetzungen gegeben sein. Wir brauchen:
Wenn diese Voraussetzungen gegeben sind, können wir fortfahren 🙂
Appveyor einrichten
Zuerst öffnen wir die Einstellungen vom Projekt. Dies kann direkt über die Projektübersicht geschehen. Alternativ gibt es den Tab „Settings“ nachdem das Projekt ausgewählt wurde. Anschließend wählen wir „Deployment“.

Öffnen der Projekteinstellungen via Projektübersicht in Appveyor

Deployment-Einstellungen des Projekts
Dieses Menü ermöglicht verschiedenste Veröffentlichung. Es gibt viele Provider wie FTP, AWS oder SQL-Datenbanken. Es können auch eigene Scripts hinterlegt werden.
In unserem Falle möchten wir die Nuget-Pakete veröffentlichen und wählen im Menü „Nuget“ aus. Die Oberfläche aktualisiert sich. Die wichtigsten Felder sind „NuGet server URL“ und „API key“. Falls ihr die Pakete auf Nuget.org veröffentlichen wollt, kann die URL leer bleiben. Im Standard werden Pakete immer auf Nuget.org veröffentlicht.

Vorgehen, um Nuget-Pakete zu veröffentlichen
Der API Key dient zur Authentifizierung, damit Pakete angelegt bzw. veröffentlicht werden dürfen. Abschließend speichern wir die Einstellungen. Mehr Schritte sind nicht notwendig.
Dadurch, dass Nuget aktiviert wurde, scannt der Buildserver nach Abschluss eines Builds
auf *.nupkg
-Dateien im Verzeichnis. Wurden welche gefunden, werden diese automatisch
veröffentlicht. Das könnt ihr auch im Build-Log sehen. Nachfolgend seht ihr einen Auszug:
Collecting artifacts...
Found artifact 'Testprojekt\bin\Release\Testprojekt.1.0.0.nupkg' matching '**\*.nupkg' path
Uploading artifacts...
[1/1] Testprojekt\bin\Release\Testprojekt.1.0.0.nupkg (1,000 bytes)...100%
Deploying using NuGet provider
Publishing Testprojekt.1.0.0.nupkg to https://www.nuget.org/api/v2/package...OK
Total packages published: 1
Build success
Sehr praktisch ist dabei, dass AppVeyor automatisch auf „doppelte“ Pakete prüft. Das bedeutet, dass Pakete, welche bereits veröffentlicht wurden, nicht nochmal veröffentlich werden. Damit gibt es beim Buildprozess keinen Fehler.
Wenn ihr nuget push
verwendet und ein bereits erstelltes Paket nochmal veröffentlicht, erhaltet
ihr eine Fehlermeldung. Je nach Buildserver wird der gesamte Buildprozess als fehlerhaft markiert,
obwohl alle anderen Schritte (z.B. kompilieren und die Testausführung) korrekt waren.
Das müsst ihr einfach ausprobieren. Nach meiner Erfahrung gibt es leider kein einheitliches Vorgehen.
Zusammenfassung
Ihr hab gesehen, wie schnell die Pakete automatisch veröffentlicht werden können. Damit ist das Veröffentlichen usw. unabhängig von einem einzelnen Entwickler. Zudem kann das ganze Team neue Versionen ohne Stress bereitstellen. Ihr müsst nur eure Versionsnummer hochzählen 🙂
Wie ist eure Meinung oder Erfahrung zur automatischen Bereitstellung von Nuget-Paketen via Buildserver?
Bildquelle: Pixabay.com