Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Golden Nu(g)Get - Traumhafte Unterstützung durch Jenkins in .NET

Bfe94b86a34d474ebaf6c0699bf08ec5?s=47 Ben Wolf
November 28, 2018

Golden Nu(g)Get - Traumhafte Unterstützung durch Jenkins in .NET

Jenkins und NuGet sind zwei bekannte Werkzeuge in der Software-Entwicklung. Ein oft übersehener Vorteil von NuGet ist die Möglichkeit, selbst eigene NuGet-Pakete zu erstellen und zu verteilen.
Der Vortrag zeigt, wie die beiden Technologien kombiniert werden können und erklärt anhand eines Beispiels einen Weg, wie allgemein-gültige Funktionalität in ein eigenes NuGet-Paket verpackt werden kann.

Bfe94b86a34d474ebaf6c0699bf08ec5?s=128

Ben Wolf

November 28, 2018
Tweet

Transcript

  1. Golden Nu(g)Get Traumhafte Unterstützung von Jenkins in .NET Benjamin Wolf

    @ichaos1985
  2. „Guter Code liest sich für mich wie ein gut geschriebenes

    Buch.“ Benjamin Wolf
 Senior Consultant bei INNOQ • Entwicklung von Anwendungen in Java / .NET • Verliebt in Software-Qualität • Kaffee-Snob
  3. Inhalt Dramatis Personae Problem(e) Lösung Wie kommen wir dort hin?

  4. Motivation

  5. Der LOGGER* DDC ‘16 * Beispielprojekt aus einem Workshop bei

    Christian Gießwein zum Thema „Architektur Deluxe mit C# und .NET“
  6. Dramatis Personae Foto © INNOQ

  7. NuGet NuGet Logo von https://github.com/NuGet/Media

  8. Jenkins Jenkins Logo von https://jenkins.io

  9. Links: Foto von Uroš Jovičić auf Unsplash / Rechts: Foto

    von Patrick Tomasso auf Unsplash Problem(e) — Zeit-/Wissensmangel
  10. Code-Duplikation durch Zeit-/Wissensmangel NumberConverter

  11. Unterschiedliche Änderungen an Duplikaten NumberConverter

  12. Entwickler*innen verlassen das Projekt NumberConverter

  13. NumberConverter Ein Bug wird gefunden

  14. Lösung — Mach’ es perfekt! Foto © INNOQ

  15. „Fertige” DLL verteilen — aber wie? ? ? ? ?

    ?
  16. None
  17. Wie kommen wir dort hin? Foto von Gian-Reto Tarnutzer on

    Unsplash
  18. NumberConverter Refactoring — Reduzieren der Code-Duplikate

  19. Refactoring — Reduzieren der Code-Duplikate Converter-Projekt NumberConverter

  20. Refactoring — Extrahieren in eigene Solution Master-Solution (*.sln) Projekt 1

    Projekt 2 Projekt 3 Converter-Projekt Projekt 4 Projekt n …
  21. Refactoring — Extrahieren in eigene Solution Converter-Projekt Master-Solution (*.sln) Converter-Solution

    (*.sln) Projekt 1 Projekt 2 Projekt 3 Projekt 4 Projekt n … Projekt n-1
  22. Refactoring — Erstellen eines NuGet Paketes Der.Konverter.1.0.0.nupkg Converter-Solution (*.sln) ?

    Converter-Projekt
  23. <?xml version="1.0" encoding=“utf-8"?> <package xmlns=“http://schemas.microsoft.com/packaging/2010/07/ nuspec.xsd"> <metadata> <!-- Required elements

    --> <id>Der.Konverter</id> <version>1.0.0</version> <description>This is a cool data converter lib.</description> <authors>Ben</authors> <!-- Optional elements --> </metadata> </package> *.nuspec
  24. <?xml version="1.0"?> <package> <metadata> <id>$id$</id> <version>$version$</version> <title>$title$</title> <authors>$author$</authors> <owners>$author$</owners> <description>$description$</description>

    <releaseNotes>Our amazing first release.</releaseNotes> <copyright>Copyright Wolf 2018</copyright> </metadata> </package> Converter.nuspec
  25. NuGet Deployment Der.Konverter.1.0.0.nupkg nuget.org ! Firmeneigentum

  26. NuGet Deployment Der.Konverter.1.0.0.nupkg Dedizierter Server € Hardware Lizenzen Support nuget.org

    !
  27. NuGet Deployment Der.Konverter.1.0.0.nupkg nuget.org Dedizierter Server ! € Netzlaufwerk

  28. nuget spec Converter.csproj Fünf Schritte zum Erfolg

  29. vim Converter.nuspec Fünf Schritte zum Erfolg

  30. Fünf Schritte zum Erfolg msbuild Converter.csproj \ /t:Rebuild \ /p:Configuration=Release

  31. Fünf Schritte zum Erfolg nuget pack Converter.csproj \ -Properties Configuration=Release

  32. Fünf Schritte zum Erfolg nuget add Der.Konverter.1.0.0.nupkg \ -Source \


    ~/Documents/developer/nuget_repo
  33. Live-Demo

  34. Jenkins Magic — Pipelines mit BlueOcean

  35. AutoMagical Deployment Jenkins Pipelines Gitflow Besonderheit des beta/alpha deployments von

    NuGet bei feature branches
  36. Fünf Schritte zum Erfolg Neues Multi-Branch Projekt anlegen

  37. Fünf Schritte zum Erfolg BlueOcean öffnen & neue Pipeline anlegen

  38. Fünf Schritte zum Erfolg Agenten anlegen

  39. Fünf Schritte zum Erfolg Stages definieren

  40. Fünf Schritte zum Erfolg Spaß!

  41. Live-Demo

  42. Pre-Release Versionen Der.Konverter.1.0.3-beta12.nupkg

  43. Pre-Release Versionen Der.Konverter.1.0.3-my-feature-branch+a7d4c42.nupkg

  44. Testen xUnit Logo von https://github.com/xunit/media / nunit Logo von http://nunit.org

    / dotCover Logo von www.jetbrains.com
  45. Wie steht’s um die Qualität? ReSharper Logo von www.jetbrains.com doxygen

    StyleCop Roslyn.Analyzers
  46. Summary NuGet Logo von https://github.com/NuGet/Media / Jenkins Logo von https://jenkins.io

    • Leicht zu verwenden • Kein Server nötig • Versionsmanagement • Automatisches Deployment • Beta-/Test-Versionen • Automatisierte Tests • Prüft Software-Qualität
  47. Summary NuGet Logo von https://github.com/NuGet/Media / Jenkins Logo von https://jenkins.io

    + = !
  48. Golden Nu(g)Get Traumhafte Unterstützung von Jenkins in .NET Benjamin Wolf

    @ichaos1985
  49. • Deckblatt, Schlussblatt: “Gifts in golden Wrapper” by Jeshu John,

    http://www.designerspics.com/photographs/gifts-golden- wrapper/ • Seite 7, 46, 47: “NuGet Logo”, cropped for presentation, https://github.com/NuGet/Media, License: https:// creativecommons.org/licenses/by/2.0/ • Seite 8, 46, 47: “Jenkins Logo”, https://jenkins.io, License https://creativecommons.org/licenses/by-sa/3.0/ • Seite 9: “Life is like an hourglass”, Photo by Uroš Jovičić on Unsplash, https://unsplash.com/photos/BXOXnQ26B7o • Seite 9: “Book, Page, Bookstore and Bookshelf”, Photo by Patrick Tomasso on Unsplash, https://unsplash.com/photos/ Oaqk7qqNh_c • Seite 17: “Road, Cloud, Cloudy and Mountain Range”, Photo by Gian-Reto Tarnutzer on Unsplash, https://unsplash.com/ photos/JruCKmJdmng • Seite 44: „xUnit Logo“, https://github.com/xunit/media • Seite 44: „nunit Logo“, http://www.nunit.org, License https://creativecommons.org/licenses/by-nc-sa/4.0 • Seite 44: „dotCover Logo“, http://www.jetbrains.com • Seite 45: „ReSharper Logo“, http://www.jetbrains.com Quellen
  50. // NuGet Parameter müssen/können in den Einstellungen des Projektes //

    getätigt werden. dotnet pack Converter.csproj /p:Configuration=Release dotnet pack --version-suffix "my-branch+127a35e" Converter.csproj
 /p:Configuration=Release dotnet nuget push Der.Konverter.1.0.0.nupkg -s \
 ~/Documents/developer/nuget_repo Alles anders mit .NET core? Quelle: https://docs.microsoft.com/en-gb/dotnet/core/tools/?tabs=netcore2x