APRIL 16, 2012 | SLIDE 1
Organize Your Chickens     NuGet for the Enterprise     Maarten Balliauw     @maartenballiauwAPRIL 16, 2012 | SLIDE 2
Organize Your Chickens                           NuGet for the EnterpriseAPRIL 16, 2012 | SLIDE 3
Who am I?      Maarten Balliauw      Antwerp, Belgium      www.realdolmen.com      Focus on web          ASP.NET MVC,...
Agenda  NuGet  Scenarios             Host your own NuGet repository             Continuous Package Integration   Chick...
NuGetAPRIL 16, 2012 | SLIDE 6
Welcome to Dependency Hell “A term for the           frustration                                 of software users who hav...
Cause and Effect  Reinventing the wheel          We don’t need that dependency          “If they can do it, we can do i...
Package Management  NuGet to the Rescue!         “NuGet is a Visual Studio extension that makes it easy         to instal...
Demo       Finding & consuming a NuGet packageAPRIL 16, 2012 | SLIDE 10
Demo       Creating & publishing a NuGet packageAPRIL 16, 2012 | SLIDE 11
Semantic Versioning  Think about your versioning! (semver.org)          Major             Breaking changes          Minor...
Hosting a repositoryAPRIL 16, 2012 | SLIDE 13
Hosting your own repository  NuGet = public feed          Privacy          Intellectual property  NuGet maintained by ...
Solutions      Folder / File share      NuGet.Server package      NuGet Gallery (or Orchard Gallery)      MyGetAPRIL 1...
Demo       NuGet.ServerAPRIL 16, 2012 | SLIDE 16
NuGet.Server limitations  Only 1 feed per installation  No UI          up to you to build it  No granular security    ...
Meet MyGet  www.myget.org  NaaS          Register and off you go!  Supports Enterprise scenarios          Granular se...
Demo       MyGetAPRIL 16, 2012 | SLIDE 19
Continuous Package  IntegrationAPRIL 16, 2012 | SLIDE 20
Typical source control...  Contains /References (if you are lucky)          ...and also           Project/_bin_deployabl...
Dependencies  Software has dependencies. Deal with it.  But are those YOUR intellectual property?          YOUR reason ...
Continuous Package Integration  Can I get rid of all these referenced assemblies   duplicated all-over my source control ...
Demo       Package RestoreAPRIL 16, 2012 | SLIDE 24
3rd parties don’t belong in your VCS  Replace them with NuGet packages  Do commit packagesrepositories.config   file  U...
Problem!  NuGet feed is subject to change...          PackageSource msbuild property to the rescue         (NuGet.settin...
Organize your chickens  Feed structuring          Scoped by quality: Build, QA, Production, …          Scoped by audien...
Guidance  Publishing a package brings great   responsibility          Breaking changes in your packages should be       ...
Guidance  Package Integration ≠ Integration Testing          CI builds reflect output of source control input          ...
Abusing NuGetAPRIL 16, 2012 | SLIDE 30
Abusing NuGet? Change of perspective                            NuGet is a package manager                            NuGe...
NuGet as a ProtocolAPRIL 16, 2012 | SLIDE 32
Chocolatey  NuGet          developer library packages  Chocolatey          applications and tools packager          “...
Demo       ChocolateyAPRIL 16, 2012 | SLIDE 34
Automate deployments  Build results in .nupkg  Octopus deploys to its tentacles          Test tentacles          Stagi...
APRIL 16, 2012 | SLIDE 36
Build                               Test                                      Package                                     ...
Conclusion                            Dependencies & people are chickens                                 Deal with them! N...
http://blog.maartenballiauw.be                                               @maartenballiauw                             ...
Upcoming SlideShare
Loading in...5
×

SDC Sweden - Organize your chickens - NuGet for the Enterprise

951

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
951
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Maarten
  • Xavier: Terugverwijzen naar “Marketing versioning”
  • Start with empty MVC template + addNuGet.ServerpkgRun siteDrop pkgs in packages folderRefresh browserFeed toevoegen in VS & show pkgs
  • Inloggen en feed aanmakenPackage pushen vanuit NPEFeed toevoegen aan VSOp MyGet feed security instellenPackage installen in VS en tonen dat er basic auth bijkomtPackage van NuGet toevoegen op MyGet en tonen dat je alle dependencies kan meepakken, mirroring, … en dat je ook gewoon van uw packages.config kan toevoegen
  • - Het feit dat NuGet.org geen garanties biedt op content- Wat als mensen packages verwijderen? BUILD breaks, DEVS unhappy again
  • Now isnot the time to take a nap (NaaP) NuGet is more than a package (system), it’s a protocol to:Distributesfunctionality (automateanything!, cfrScaffolding!)Distribute websites (akadeployments!)Distribute software in general 
  • Xavier
  • Maarten
  • Maarten
  • XavierMaartenXavierMaarten
  • SDC Sweden - Organize your chickens - NuGet for the Enterprise

    1. 1. APRIL 16, 2012 | SLIDE 1
    2. 2. Organize Your Chickens NuGet for the Enterprise Maarten Balliauw @maartenballiauwAPRIL 16, 2012 | SLIDE 2
    3. 3. Organize Your Chickens NuGet for the EnterpriseAPRIL 16, 2012 | SLIDE 3
    4. 4. Who am I?  Maarten Balliauw  Antwerp, Belgium  www.realdolmen.com  Focus on web  ASP.NET MVC, Windows Azure, SignalR, ...  MVP Windows Azure & ASPInsider  http://blog.maartenballiauw.be  @maartenballiauw  Author: Pro NuGet - http://amzn.to/pronugetAPRIL 16, 2012 | SLIDE 4
    5. 5. Agenda  NuGet  Scenarios  Host your own NuGet repository  Continuous Package Integration Chickens?!  Abusing NuGet  NuGet Inception  ConclusionAPRIL 16, 2012 | SLIDE 5
    6. 6. NuGetAPRIL 16, 2012 | SLIDE 6
    7. 7. Welcome to Dependency Hell “A term for the frustration of software users who have installed software packages which have dependencies on specific versions of other software packages.” (Wikipedia)APRIL 16, 2012 | SLIDE 7
    8. 8. Cause and Effect  Reinventing the wheel  We don’t need that dependency  “If they can do it, we can do it, but better”  What happened to reuse of components?  Marketing-Driven Versioning  People are waiting for v2 to buy  Let’s call it v4 Platform Update SP3 November Edition KB2348063 RTW Refresh  We lost ownership of AssemblyVersion ?APRIL 16, 2012 | SLIDE 8
    9. 9. Package Management  NuGet to the Rescue! “NuGet is a Visual Studio extension that makes it easy to install and update open source libraries and tools in Visual Studio.”  Simple concept  Find Packages  (Re)Use Packages  Produce PackagesAPRIL 16, 2012 | SLIDE 9
    10. 10. Demo Finding & consuming a NuGet packageAPRIL 16, 2012 | SLIDE 10
    11. 11. Demo Creating & publishing a NuGet packageAPRIL 16, 2012 | SLIDE 11
    12. 12. Semantic Versioning  Think about your versioning! (semver.org) Major Breaking changes Minor Backwards compatible API additions/changes Patch Bugfixes not affecting the API  Always specify lowerbound  Use a version range (lowerbound + upperbound) when versioning of package you depend on is messed upAPRIL 16, 2012 | SLIDE 12
    13. 13. Hosting a repositoryAPRIL 16, 2012 | SLIDE 13
    14. 14. Hosting your own repository  NuGet = public feed  Privacy  Intellectual property  NuGet maintained by package authors  Author removes v1.0.45 and you depend on itAPRIL 16, 2012 | SLIDE 14
    15. 15. Solutions  Folder / File share  NuGet.Server package  NuGet Gallery (or Orchard Gallery)  MyGetAPRIL 16, 2012 | SLIDE 15
    16. 16. Demo NuGet.ServerAPRIL 16, 2012 | SLIDE 16
    17. 17. NuGet.Server limitations  Only 1 feed per installation  No UI  up to you to build it  No granular security  only 1 API-key for entire feed  Conclusion: requires you to develop if you want something more usefulAPRIL 16, 2012 | SLIDE 17
    18. 18. Meet MyGet  www.myget.org  NaaS  Register and off you go!  Supports Enterprise scenarios  Granular security  Package mirroring  ProxyingAPRIL 16, 2012 | SLIDE 18
    19. 19. Demo MyGetAPRIL 16, 2012 | SLIDE 19
    20. 20. Continuous Package IntegrationAPRIL 16, 2012 | SLIDE 20
    21. 21. Typical source control...  Contains /References (if you are lucky)  ...and also Project/_bin_deployable_assemblies  ...and also /References/old  ...and also /..././../.././References  Usually references GAC-ed assembliesAPRIL 16, 2012 | SLIDE 21
    22. 22. Dependencies  Software has dependencies. Deal with it.  But are those YOUR intellectual property?  YOUR reason to build software?  YOUR product?  No. They are dependencies. And they don’t belong in source control.APRIL 16, 2012 | SLIDE 22
    23. 23. Continuous Package Integration  Can I get rid of all these referenced assemblies duplicated all-over my source control system? Yes!  Do I need to install and maintain NuGet on all my build agents? No!APRIL 16, 2012 | SLIDE 23
    24. 24. Demo Package RestoreAPRIL 16, 2012 | SLIDE 24
    25. 25. 3rd parties don’t belong in your VCS  Replace them with NuGet packages  Do commit packagesrepositories.config file  Use Enable-PackageRestoreAPRIL 16, 2012 | SLIDE 25
    26. 26. Problem!  NuGet feed is subject to change...  PackageSource msbuild property to the rescue (NuGet.settings.targets in $(SolutionDir).nuget folder)  Now what...  Host your own feed and mirror packages  Or use MyGet for that APRIL 16, 2012 | SLIDE 26
    27. 27. Organize your chickens  Feed structuring  Scoped by quality: Build, QA, Production, …  Scoped by audience: public, restricted access  Other:  Scoped by product version, milestone…  Scoped by target platformAPRIL 16, 2012 | SLIDE 27
    28. 28. Guidance  Publishing a package brings great responsibility  Breaking changes in your packages should be versioned accordingly!  Consumers might choose to no longer consume any packages you publishedAPRIL 16, 2012 | SLIDE 28
    29. 29. Guidance  Package Integration ≠ Integration Testing  CI builds reflect output of source control input  Same input always produces same output  Do not auto-update packages during automated buildsAPRIL 16, 2012 | SLIDE 29
    30. 30. Abusing NuGetAPRIL 16, 2012 | SLIDE 30
    31. 31. Abusing NuGet? Change of perspective NuGet is a package manager NuGet is a protocol for distributing packagesAPRIL 16, 2012 | SLIDE 31
    32. 32. NuGet as a ProtocolAPRIL 16, 2012 | SLIDE 32
    33. 33. Chocolatey  NuGet  developer library packages  Chocolatey  applications and tools packager  “yum” or “apt-get” for Windows  www.chocolatey.orgAPRIL 16, 2012 | SLIDE 33
    34. 34. Demo ChocolateyAPRIL 16, 2012 | SLIDE 34
    35. 35. Automate deployments  Build results in .nupkg  Octopus deploys to its tentacles  Test tentacles  Staging tentacles  Production tentacles  www.octopusdeploy.comAPRIL 16, 2012 | SLIDE 35
    36. 36. APRIL 16, 2012 | SLIDE 36
    37. 37. Build Test Package Push Release / Publish Deploy Demo Continuous DeliveryAPRIL 16, 2012 | SLIDE 37
    38. 38. Conclusion Dependencies & people are chickens Deal with them! NuGet can help Set up your own NuGet repository Continuous package integration NuGet is a package manager NuGet is a protocolAPRIL 16, 2012 | SLIDE 38
    39. 39. http://blog.maartenballiauw.be @maartenballiauw http://amzn.to/pronuget or Install-Package ProNuGetTHANK YOU!APRIL 16, 2012 | SLIDE 39
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×