MSDN Live - CI using TFS11 & NuGet

2,697 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
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,697
On SlideShare
0
From Embeds
0
Number of Embeds
1,126
Actions
Shares
0
Downloads
18
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Free trial toMyGet Small Subscription
  • 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

    ×