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.

MSDN Live - CI using TFS11 & NuGet

2,890 views

Published on

NuGet quickly became a very popular package management solution for .NET and has been around for some time now. The introduction of a central package repository and the integrated NuGet tooling suddenly made it a whole lot easier to improve certain ALM processes, proof of which can be found into the increasing rate at which many packages make it to the NuGet Gallery.
At the same time, most businesses are struggling how to take optimal benefit from this while trying to avoid a situation commonly known as “dependency hell”. In addition, most are not anticipating or designing for failure by depending directly, which became painfully clear during a recent downtime of the NuGet Gallery. This session will provide you with guidance on how you can use both NuGet and TFS11 to take your development environment to the next level.

Published in: Technology
  • Be the first to comment

MSDN Live - CI using TFS11 & NuGet

  1. 1. www.realdolmen.com CONTINUOUS INTEGRATION USING &MAY 8, 2012 | SLIDE 1
  2. 2. WHO AM I?  Xavier Decoster  Antwerp, Belgium  www.realdolmen.com  Co-founder of MyGet.org  Focus on ALM/Web  http://www.xavierdecoster.com  @xavierdecosterMAY 8, 2012 | SLIDE 3
  3. 3. AGENDA  Continuous Integration  Room for Improvement  Dealing with dependencies  Versioning  VCS issues  Debugging  Package Management  One step closer to Continuous Delivery?  1 + 1 = Optimize for HappinessMAY 8, 2012 | SLIDE 4
  4. 4. Do you speak it? CONTINUOUS INTEGRATIONMAY 8, 2012 | SLIDE 5
  5. 5. DISCLAIMER  Not saying “my way” must be “your way”  Non-optimal doesn’t mean wrong  Pointing out opportunities and alternativesMAY 8, 2012 | SLIDE 6
  6. 6. CONTINUOUS INTEGRATION  Team members integrate their work frequently  Each integration is verified by an automated build (including tests)  Goal:  Detect integration errors  As quickly as possible!  Why?  Reduce risks  Deployable software at any timeMAY 8, 2012 | SLIDE 7
  7. 7. (OFTEN) NON-OPTIMAL SETUP  Most commonly encountered approach to CI Developer  Automated Build triggered by VCS VCS  All tests run every single time Build  Eventually someone looks at the CI Tests outcome FeedbackMAY 8, 2012 | SLIDE 8
  8. 8. WHAT IF…  … compilation fails?  Changes already in VCS! Developer  Entire team affected VCS  … a test fails?  Same story! Build  … no one noticed the CI failed?  Kittens die! Tests FeedbackMAY 8, 2012 | SLIDE 9
  9. 9. OPTIMIZE FOR HAPPINESS  Integrate first!  Gated check-ins Developer  Integration fails? Build  Changeset rejected Tests  Integration succeeds?  Changeset committed Feedback Every successful check-in is a reward for good work. VCSMAY 8, 2012 | SLIDE 10
  10. 10. OPTIMIZE FOR QUALITY  Code Analysis Developer Build  Test Impact Analysis Tests Feedback VCSMAY 8, 2012 | SLIDE 11
  11. 11. TFS11 – CI IMPROVEMENTS  Build TriggersMAY 8, 2012 | SLIDE 12
  12. 12. TFS11 – CI IMPROVEMENTS  Supporting multiple test frameworks  MSTest (built-in)  xUnit (http://aka.ms/xunit-vs11)  NUnit (http://aka.ms/nunit-vs11)MAY 8, 2012 | SLIDE 13
  13. 13. VS11 – CI IMPROVEMENTS  Continuously Run Unit Tests  Separate Code Analysis Results windowMAY 8, 2012 | SLIDE 14
  14. 14. VS11 – CI IMPROVEMENTS  Tracking BuildsMAY 8, 2012 | SLIDE 15
  15. 15. VS11 – CI IMPROVEMENTS  Faster Feedback  Dialog Prompt  Auto-Reconciliation  Toast notifications  Improved accessibility to builds  Own recent builds overview  Favorites!  Filter definitions using search boxMAY 8, 2012 | SLIDE 16
  16. 16. TFS ONLINE (BETA)  Built upon Windows Azure  “TFS in the Cloud”  Benefits  Incremental feature upgrades  Reduced timespan between major upgrades  Setup & configuration by Microsoft  Most of internal support & maintenance by Microsoft  Identity management  Via Windows Azure ACS  Only Live ID at the moment  Federation to come?MAY 8, 2012 | SLIDE 17
  17. 17. DEALING WITH DEPENDENCIESMAY 8, 2012 | SLIDE 18
  18. 18. 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.”MAY 8, 2012 | SLIDE 19
  19. 19. REACTIONS  Reinventing the wheel  We don’t need that dependency  “If they can do it, we can do it, but better”  Marketing-driven versioning  People are waiting for v2 to buy  Let’s call it v7 Platform Update SP3 November Edition KB2348063 RTW Refresh  What happened to reuse of components?  We lost ownership of AssemblyVersion ?MAY 8, 2012 | SLIDE 20
  20. 20. CAUSE AND EFFECT Reference-by-source • “Needed for debugging” syndrome • Found a bug and fixed it • Upgrade path: merges! Reference-by-release • Use symbols for debugging • Report/Fix the bug and submit a pull request • Clean upgrade pathMAY 8, 2012 | SLIDE 21
  21. 21. PACKAGE MANAGEMENTMAY 8, 2012 | SLIDE 22
  22. 22. NUGET  NuGet Gallery  5000+ unique packages  Within “2 clicks or 1 command” reach inside Visual Studio  NuGet improved  Discoverability  Upgrade experience  Reuse of software  Reference-by-release + symbols for everyone  NuGet provides opportunities  Dependency management  Reach, discoverability & visibility of own packagesMAY 8, 2012 | SLIDE 23
  23. 23. VERSIONING  NuGet supports Semantic Versioning  http://www.semver.org Major Breaking changes Minor Backwards compatible API additions/changes Patch Bugfixes not affecting the API  Prerelease  Tags: Alpha, Beta, RC, … (e.g. v1.0.0-RC)  Note: precedence in alphabetic order!MAY 8, 2012 | SLIDE 24
  24. 24. NUGET SUPPORTS SEMANTIC VERSIONING  But not entirely…  NuGet doesn’t support 4th version number (build) for prereleases  1.0.0-RC.32190  Caution: pick a scheme!  Major.Minor.Patch[-Prerelease]  Major.Minor.Patch[.Build]  Workaround:  push CI packages to another feed, e.g. MyGet.org  mark CI packages as prerelease when pushing to NuGet.org – Remove Build number – Append Prerelease tagMAY 8, 2012 | SLIDE 25
  25. 25. DEPENDENCIES VS VCS  In TFS terms: Source Control  Today often contains  Documents  Binaries  Tools  Scripts  Sources  Struggling with binary diffs  Merge conflicts  Repository sizeMAY 8, 2012 | SLIDE 26
  26. 26. PACKAGE REPOSITORY  NuGet Package Repository  Package Restore feature  Opportunity  Get rid of binaries in VCS  Decrease binary diff issues & merge conflicts  Decrease VCS repository size  Manage dependencies centrally  Fine-grained packages = fine-grained dependenciesMAY 8, 2012 | SLIDE 27
  27. 27. IN OR OUT?  Your choice  Have a strategy!  No-Commit?  What if the package source goes down?  What if a package got removed from the repository?  MirroringMAY 8, 2012 | SLIDE 28
  28. 28. Package Restore Package & Symbols Publishing SOLUTION SETUPMAY 8, 2012 | SLIDE 29
  29. 29. DEMO SUMMARY  Enable-PackageRestore  Install-Package NuSpec  Install-NuSpec <project> -EnablePackageBuild  Enable-PackagePush  Set pkg src URL, symbols src URL, API-key  Easy package creation (IntelliSense)  Automatic package building & versioning  Automatic package & symbols pushingMAY 8, 2012 | SLIDE 30
  30. 30. RESOURCES  Continuous Integration: http://martinfowler.com/articles/continuousIntegration.html  Team Foundation Service (Preview): http://tfspreview.com/ (ALM Rangers whitepaper)  Visual Studio 11 & TFS 11 (Beta): http://www.microsoft.com/visualstudio/11/en-us  NuGet: http://www.nuget.org  http://docs.nuget.org/docs/start-here/overview PM> Install-Package ProNuGet  MyGet: http://www.myget.org  SymbolSource:  http://www.symbolsource.orgMAY 8, 2012 | SLIDE 31
  31. 31. BONUS http://bit.ly/mygetforfreeMAY 8, 2012 | SLIDE 32
  32. 32. Q&AMAY 8, 2012 | SLIDE 33
  33. 33. THANK YOU FOR JOININGMAY 8, 2012 | SLIDE 34

×