Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

of

20111010 agile minds - organize your chickens - nuget for the enterprise Slide 1 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 2 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 3 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 4 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 5 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 6 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 7 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 8 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 9 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 10 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 11 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 12 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 13 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 14 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 15 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 16 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 17 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 18 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 19 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 20 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 21 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 22 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 23 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 24 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 25 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 26 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 27 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 28 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 29 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 30 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 31 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 32 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 33 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 34 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 35 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 36 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 37 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 38 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 39 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 40 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 41 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 42 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 43 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 44 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 45 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 46 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 47 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 48 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 49 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 50 20111010 agile minds - organize your chickens - nuget for the enterprise Slide 51
Upcoming SlideShare
Organize your Chickens - NuGet for the Enterprise (UGIALTNET)
Next
Download to read offline and view in fullscreen.

2 Likes

Share

Download to read offline

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

Download to read offline

Related Books

Free with a 30 day trial from Scribd

See all

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

  1. 1. NuGet for the Enterprise ORGANIZE YOUR CHICKENS FEBRUARY 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  @maartenballiauw FEBRUARY 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  @xavierdecoster FEBRUARY 12, 2012 | SLIDE 3
  4. 4. AGENDA  Chickens?  NuGet  Scenarios  Host your own NuGet repository  Continuous (Package) Integration  (Ab)using NuGet  Conclusion FEBRUARY 12, 2012 | SLIDE 4
  5. 5. Dependency Hell WELCOME TO DLL HELL FEBRUARY 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: Wikipedia FEBRUARY 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 MANAGEMENT FEBRUARY 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 Packages FEBRUARY 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.org FEBRUARY 12, 2012 | SLIDE 11
  12. 12. CONSUMING PACKAGES  Simple as adding a reference FEBRUARY 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.ps1 FEBRUARY 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-Transformations FEBRUARY 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)  Lib FEBRUARY 12, 2012 | SLIDE 17
  18. 18. NUGET MANIFEST SPECIFICATION  NuSpec manifest  XML file (with XSD available)  Package metadata FEBRUARY 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 up FEBRUARY 12, 2012 | SLIDE 19
  20. 20. ADVANCED USAGE SCENARIOS  Host your own NuGet repository  Continuous (Package) Integration  (Ab)using NuGet FEBRUARY 12, 2012 | SLIDE 20
  21. 21. Those chickens are mine! HOSTING YOUR OWN REPOSITORY FEBRUARY 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 it FEBRUARY 12, 2012 | SLIDE 22
  23. 23. SOLUTIONS  Folder / File share  Orchard Gallery (or NuGet Gallery)  NuGet.Server package  MyGet FEBRUARY 12, 2012 | SLIDE 23
  24. 24. Install-Package NuGet.Server NUGET.SERVER DEMO FEBRUARY 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 useful FEBRUARY 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 mirroring FEBRUARY 12, 2012 | SLIDE 26
  27. 27. Log in to www.myget.org and get started MYGET DEMO FEBRUARY 12, 2012 | SLIDE 27
  28. 28. Fetch the chickens when you need them CONTINUOUS (PACKAGE) INTEGRATION FEBRUARY 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 assemblies FEBRUARY 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 DEMO FEBRUARY 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-PackageRestore FEBRUARY 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 platform FEBRUARY 12, 2012 | SLIDE 35
  36. 36. (AB)USING NUGET FEBRUARY 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 published FEBRUARY 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 packages FEBRUARY 12, 2012 | SLIDE 40
  41. 41. Scaffolding, CmdLets, Plug-ins, … EXTENDING NUGET FEBRUARY 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.com FEBRUARY 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%NuGetCommands FEBRUARY 12, 2012 | SLIDE 45
  46. 46. CHOCOLATEY  NuGet  developer library packages  Chocolatey  applications and tools packager  “yum” or “apt-get” for Windows  www.chocolatey.org FEBRUARY 12, 2012 | SLIDE 46
  47. 47. NuGet desert CHOCOLATEY DEMO FEBRUARY 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 repo FEBRUARY 12, 2012 | SLIDE 48
  49. 49. CONCLUSION FEBRUARY 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
  • b0jan

    Apr. 17, 2016
  • gaterking

    Jul. 25, 2012

Views

Total views

1,232

On Slideshare

0

From embeds

0

Number of embeds

1

Actions

Downloads

3

Shares

0

Comments

0

Likes

2

×