NuGet for the Enterprise      ORGANIZE YOUR CHICKENSFEBRUARY 12, 2012 | SLIDE 1
WHO ARE WE?        Maarten Balliauw        Antwerp, Belgium        www.realdolmen.com        Focus on web          AS...
WHO ARE WE?        Xavier Decoster        Antwerp, Belgium        www.realdolmen.com        Focus on web/ALM         ...
AGENDA        Chickens?        NuGet        Scenarios          Host your own NuGet repository          Continuous (Pa...
Dependency Hell      WELCOME TO DLL HELLFEBRUARY 12, 2012 | SLIDE 5
WELCOME TO DEPENDENCY HELL “A term for the frustration of software users who have installed software packages which have d...
CAUSE AND EFFECT        Reinventing the wheel          We don’t need that dependency          “If they can do it, we ca...
Using NuGet      PACKAGE MANAGEMENTFEBRUARY 12, 2012 | SLIDE 8
PACKAGE MANAGEMENT        NuGet to the Rescue!        “NuGet is a Visual Studio extension that makes it easy to install  ...
PACKAGE WHAT?        Package Management        “…a collection of software tools to automate the process of        install...
GETTING STARTED        Tooling:            NuGet Package Manager (http://nuget.org)            NuGet Package Explorer (...
CONSUMING PACKAGES        Simple as adding a referenceFEBRUARY 12, 2012 | SLIDE 12
ONE DIALOG TO RULE THEM ALL…        Install-Package        Update-Package        Uninstall-Package        Settings    ...
NUGET PACKAGE MANAGER CONSOLE        PowerShell enabled!        Extensible!          Scaffolding, NuGetPowerTools, …   ...
CONFIGURABLE PACKAGE SOURCES        Configurable through…          NuGet Library Package Manager (VS add-in)          N...
CREATING PACKAGES        What’s a package?            Just a zip-file containing:            … content and source code ...
PACKAGE CONVENTIONS        Conventions          http://docs.nuget.org/docs/creating-packages/Package-           Conventi...
NUGET MANIFEST SPECIFICATION        NuSpec manifest          XML file (with XSD available)          Package metadataFEB...
SEMANTIC VERSIONING        Think about your versioning! (semver.org)            Major                  Breaking changes  ...
ADVANCED USAGE SCENARIOS        Host your own NuGet repository        Continuous (Package) Integration        (Ab)using...
Those chickens are mine!      HOSTING YOUR OWN      REPOSITORYFEBRUARY 12, 2012 | SLIDE 21
HOSTING YOUR OWN REPOSITORY        NuGet = public feed          Privacy          Intellectual property        NuGet ma...
SOLUTIONS        Folder / File share        Orchard Gallery (or NuGet Gallery)        NuGet.Server package        MyGe...
Install-Package NuGet.Server      NUGET.SERVER DEMOFEBRUARY 12, 2012 | SLIDE 24
NUGET.SERVER LIMITATIONS        Only 1 feed per installation        No UI: up to you to build it        No granular sec...
MEET MYGET        www.myget.org        NaaS          Register and off you go! (no dev)        Supports Enterprise scen...
Log in to www.myget.org and get started      MYGET DEMOFEBRUARY 12, 2012 | SLIDE 27
Fetch the chickens when you need them      CONTINUOUS (PACKAGE)      INTEGRATIONFEBRUARY 12, 2012 | SLIDE 28
TYPICAL SOURCE CONTROL...        Contains /References (if you are lucky)          ...and also Project/_bin_deployable_as...
DEPENDENCIES        Software has dependencies. Deal with it.        But are those YOUR intellectual property?          ...
CONTINUOUS (PACKAGE) INTEGRATION  Can I get rid of all these referenced assemblies   duplicated all-over my source contro...
Organize your build chickens!      NUGETPOWERTOOLS DEMOFEBRUARY 12, 2012 | SLIDE 32
3RD PARTIES DON’T BELONG IN YOUR SCM        Source control bloated with third-party binaries?          Replace them with...
PROBLEM!        NuGet feed is subject to change...          PackageSource MSBuild property to the rescue          NuGet...
ORGANIZE YOUR CHICKENS        Feed structuring          Scoped by quality: Build, QA, Production, …          Scoped by ...
(AB)USING NUGETFEBRUARY 12, 2012 | SLIDE 36
GUIDANCE        Publishing a package brings great responsibility          Breaking changes in your packages should be ve...
GUIDANCE        Package Integration ≠ Integration Testing          CI builds reflect output of source control input     ...
FEBRUARY 12, 2012 | SLIDE 39
(AB)USING NUGET?        Change of perspective                               NuGet as a package                           ...
Scaffolding, CmdLets, Plug-ins, …      EXTENDING NUGETFEBRUARY 12, 2012 | SLIDE 41
SCAFFOLDING        T4, Mvc, …        Create your own PowerShell cmdlets        Automate Visual Studio (access to DTE)FE...
AUTOMATE DEPLOYMENTS        Build results in .nupkg        Octopus deploys to its tentacles          Test tentacles    ...
FEBRUARY 12, 2012 | SLIDE 44
NUGET COMMAND LINE PLUG-INS        Extend NuGet.exe        Custom Commands        How?            Build class library ...
CHOCOLATEY        NuGet          developer library packages        Chocolatey          applications and tools packager...
NuGet desert      CHOCOLATEY DEMOFEBRUARY 12, 2012 | SLIDE 47
ORCHARD / WEBMATRIX / …        NuGet not bound to VS        Orchard CMS: modules & themes        WebMatrix: install pag...
CONCLUSIONFEBRUARY 12, 2012 | SLIDE 49
Conclusion• Dependencies & people are chickens  Deal with them! NuGet can help• Set up your own NuGet repository for vari...
http://blog.maartenballiauw.be                                            @maartenballiauw                               h...
Upcoming SlideShare
Loading in …5
×

20111010 agile minds - organize your chickens - nuget for the enterprise

826 views
758 views

Published on

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

No Downloads
Views
Total views
826
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Maarten
  • Maarten
  • Xavier
  • Xavier
  • Xavier
  • XavierMaarten
  • Maarten
  • NuGet Install-PackageWhen you use NuGet to install a package, it copies the library files to your solution and automatically updates your project (add references, change config files, etc). NuGet Uninstall-PackageIf you remove a package, NuGet reverses whatever changes it made so that no clutter is left.
  • Xavier: Terugverwijzen naar “Marketing versioning”
  • Xavier
  • Maarten
  • Maarten
  • Maarten
  • XavierStart with empty MVC template + addNuGet.ServerpkgRun siteDrop pkgs in packages folderRefresh browserFeed toevoegen in VS & show pkgs
  • Xavier
  • Maarten
  • MaartenInloggen en feed aanmakenPackage pushen vanuit NPEFeed toevoegen aan VSOp MyGet feed security instellenPackage installen in VS en tonen dat er basic auth bijkomtPackage vanNuGet toevoegen op MyGet en tonen dat je alle dependencies kan meepakken, mirroring, … en dat je ook gewoon van uw packages.config kan toevoegen
  • Xavier
  • Xavier
  • Xavier
  • Maarten
  • Maarten
  • Xavier- Het feit dat NuGet.org geen garanties biedt op content- Wat als mensen packages verwijderen? BUILD breaks, DEVS unhappy again
  • Maarten -> Xavier
  • Xavier
  • Xavier
  • Xavier
  • Maarten
  • Maarten
  • TODO Scaffolding? Toevoegen van functies?Eventueel de NuGet.exe plugins ook nog tonen?
  • Maarten
  • Maarten
  • Xavier
  • Xavier
  • Maarten
  • XavierMaartenXavierMaarten
  • 20111010 agile minds - organize your chickens - nuget for the enterprise

    1. 1. NuGet for the Enterprise ORGANIZE YOUR CHICKENSFEBRUARY 12, 2012 | SLIDE 1
    2. 2. WHO ARE WE?  Maarten Balliauw  Antwerp, Belgium  www.realdolmen.com  Focus on web  ASP.NET, ASP.NET MVC, PHP, Azure, …  MVP Windows Azure (formerly ASP.NET)  http://blog.maartenballiauw.be  @maartenballiauwFEBRUARY 12, 2012 | SLIDE 2
    3. 3. WHO ARE WE?  Xavier Decoster  Antwerp, Belgium  www.realdolmen.com  Focus on web/ALM  Visual Studio, TFS, Scrum, ...  Silverlight, ASP.NET, ASP.NET MVC, …  http://www.xavierdecoster.com  @xavierdecosterFEBRUARY 12, 2012 | SLIDE 3
    4. 4. AGENDA  Chickens?  NuGet  Scenarios  Host your own NuGet repository  Continuous (Package) Integration  (Ab)using NuGet  ConclusionFEBRUARY 12, 2012 | SLIDE 4
    5. 5. Dependency Hell WELCOME TO DLL HELLFEBRUARY 12, 2012 | SLIDE 5
    6. 6. 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.” Source: WikipediaFEBRUARY 12, 2012 | SLIDE 6
    7. 7. 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 does the 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 ?FEBRUARY 12, 2012 | SLIDE 7
    8. 8. Using NuGet PACKAGE MANAGEMENTFEBRUARY 12, 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.”FEBRUARY 12, 2012 | SLIDE 9
    10. 10. PACKAGE WHAT?  Package Management “…a collection of software tools to automate the process of installing, upgrading, configuring, and removing software packages…” Source: Wikipedia  Simple concept  Find Packages  (Re)Use Packages  Produce PackagesFEBRUARY 12, 2012 | SLIDE 10
    11. 11. GETTING STARTED  Tooling:  NuGet Package Manager (http://nuget.org)  NuGet Package Explorer (http://npe.codeplex.com)  Install-Package NuGetPowerTools  Install-Package NuGet.CommandLine  Guidance and documentation  http://docs.nuget.orgFEBRUARY 12, 2012 | SLIDE 11
    12. 12. CONSUMING PACKAGES  Simple as adding a referenceFEBRUARY 12, 2012 | SLIDE 12
    13. 13. ONE DIALOG TO RULE THEM ALL…  Install-Package  Update-Package  Uninstall-Package  Settings  Package Sources  Local (offline) Cache location  Also: Manage packages on solution level!  Right-click solution > Manage NuGet Packages…FEBRUARY 12, 2012 | SLIDE 13
    14. 14. NUGET PACKAGE MANAGER CONSOLE  PowerShell enabled!  Extensible!  Scaffolding, NuGetPowerTools, …  %UserProfile%DocumentsWindowsPowerShellNuGet_profile.ps1FEBRUARY 12, 2012 | SLIDE 14
    15. 15. CONFIGURABLE PACKAGE SOURCES  Configurable through…  NuGet Library Package Manager (VS add-in)  NuGet.config (in %APPDATA%RoamingNuGetNuGet.config)  NuGet.settings.targets (MSBUILD file part of NuGetPowerTools)FEBRUARY 12, 2012 | SLIDE 15
    16. 16. CREATING PACKAGES  What’s a package?  Just a zip-file containing:  … content and source code (to be injected into target project)  … PowerShell scripts and executables  … configuration file and source code transformations  http://docs.nuget.org/docs/creating-packages/Configuration-File- and-Source-Code-TransformationsFEBRUARY 12, 2012 | SLIDE 16
    17. 17. PACKAGE CONVENTIONS  Conventions  http://docs.nuget.org/docs/creating-packages/Package- Conventions  Folder structure  Tools (init.ps1, install.ps1, uninstall.ps1)  Content  Manifest (.nuspec file)  LibFEBRUARY 12, 2012 | SLIDE 17
    18. 18. NUGET MANIFEST SPECIFICATION  NuSpec manifest  XML file (with XSD available)  Package metadataFEBRUARY 12, 2012 | SLIDE 18
    19. 19. 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 upFEBRUARY 12, 2012 | SLIDE 19
    20. 20. ADVANCED USAGE SCENARIOS  Host your own NuGet repository  Continuous (Package) Integration  (Ab)using NuGetFEBRUARY 12, 2012 | SLIDE 20
    21. 21. Those chickens are mine! HOSTING YOUR OWN REPOSITORYFEBRUARY 12, 2012 | SLIDE 21
    22. 22. HOSTING YOUR OWN REPOSITORY  NuGet = public feed  Privacy  Intellectual property  NuGet maintained by package authors  Author removes v1.0.45 and you depend on itFEBRUARY 12, 2012 | SLIDE 22
    23. 23. SOLUTIONS  Folder / File share  Orchard Gallery (or NuGet Gallery)  NuGet.Server package  MyGetFEBRUARY 12, 2012 | SLIDE 23
    24. 24. Install-Package NuGet.Server NUGET.SERVER DEMOFEBRUARY 12, 2012 | SLIDE 24
    25. 25. 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 usefulFEBRUARY 12, 2012 | SLIDE 25
    26. 26. MEET MYGET  www.myget.org  NaaS  Register and off you go! (no dev)  Supports Enterprise scenarios  Granular security  Package mirroringFEBRUARY 12, 2012 | SLIDE 26
    27. 27. Log in to www.myget.org and get started MYGET DEMOFEBRUARY 12, 2012 | SLIDE 27
    28. 28. Fetch the chickens when you need them CONTINUOUS (PACKAGE) INTEGRATIONFEBRUARY 12, 2012 | SLIDE 28
    29. 29. 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 assembliesFEBRUARY 12, 2012 | SLIDE 29
    30. 30. 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.FEBRUARY 12, 2012 | SLIDE 30
    31. 31. 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!FEBRUARY 12, 2012 | SLIDE 31
    32. 32. Organize your build chickens! NUGETPOWERTOOLS DEMOFEBRUARY 12, 2012 | SLIDE 32
    33. 33. 3RD PARTIES DON’T BELONG IN YOUR SCM  Source control bloated with third-party binaries?  Replace them with NuGet packages  Commit packages.config/repositories.config files  Preferably not the packages  Use NuGetPowerTools  Enable-PackageRestoreFEBRUARY 12, 2012 | SLIDE 33
    34. 34. 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 third-party packages  Internal NuGet.Server  Network Share  Or use MyGet for that FEBRUARY 12, 2012 | SLIDE 34
    35. 35. 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 platformFEBRUARY 12, 2012 | SLIDE 35
    36. 36. (AB)USING NUGETFEBRUARY 12, 2012 | SLIDE 36
    37. 37. 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 publishedFEBRUARY 12, 2012 | SLIDE 37
    38. 38. 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 builds!FEBRUARY 12, 2012 | SLIDE 38
    39. 39. FEBRUARY 12, 2012 | SLIDE 39
    40. 40. (AB)USING NUGET?  Change of perspective NuGet as a package manager NuGet as a protocol for distributing packagesFEBRUARY 12, 2012 | SLIDE 40
    41. 41. Scaffolding, CmdLets, Plug-ins, … EXTENDING NUGETFEBRUARY 12, 2012 | SLIDE 41
    42. 42. SCAFFOLDING  T4, Mvc, …  Create your own PowerShell cmdlets  Automate Visual Studio (access to DTE)FEBRUARY 12, 2012 | SLIDE 42
    43. 43. AUTOMATE DEPLOYMENTS  Build results in .nupkg  Octopus deploys to its tentacles  Test tentacles  Staging tentacles  Production tentacles  www.octopusdeploy.comFEBRUARY 12, 2012 | SLIDE 43
    44. 44. FEBRUARY 12, 2012 | SLIDE 44
    45. 45. NUGET COMMAND LINE PLUG-INS  Extend NuGet.exe  Custom Commands  How?  Build class library  Reference NuGet.exe  Inherit Command  Deploy your dll to %LocalAppData%NuGetCommandsFEBRUARY 12, 2012 | SLIDE 45
    46. 46. CHOCOLATEY  NuGet  developer library packages  Chocolatey  applications and tools packager  “yum” or “apt-get” for Windows  www.chocolatey.orgFEBRUARY 12, 2012 | SLIDE 46
    47. 47. NuGet desert CHOCOLATEY DEMOFEBRUARY 12, 2012 | SLIDE 47
    48. 48. ORCHARD / WEBMATRIX / …  NuGet not bound to VS  Orchard CMS: modules & themes  WebMatrix: install page helpers on the fly  Your app: offer plugins through a repoFEBRUARY 12, 2012 | SLIDE 48
    49. 49. CONCLUSIONFEBRUARY 12, 2012 | SLIDE 49
    50. 50. Conclusion• Dependencies & people are chickens Deal with them! NuGet can help• Set up your own NuGet repository for various reasons• Continuous package integration• NuGet is a package manager NuGet is a protocol www.visug.be
    51. 51. http://blog.maartenballiauw.be @maartenballiauw http://www.xavierdecoster.com @xavierdecoster Any questions? THANK YOU!FEBRUARY 12, 2012 | SLIDE 51

    ×