SlideShare a Scribd company logo
1 of 33
www.realdolmen.com




                        CONTINUOUS INTEGRATION
                                USING


                                  &




MAY 8, 2012 | SLIDE 1
WHO AM I?
        Xavier Decoster
        Antwerp, Belgium
        www.realdolmen.com
        Co-founder of MyGet.org
        Focus on ALM/Web
        http://www.xavierdecoster.com
        @xavierdecoster




MAY 8, 2012 | SLIDE 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 Happiness


MAY 8, 2012 | SLIDE 4
Do you
                        speak it?




                                    CONTINUOUS
                                    INTEGRATION

MAY 8, 2012 | SLIDE 5
DISCLAIMER
        Not saying “my way” must be “your way”

        Non-optimal doesn’t mean wrong

        Pointing out opportunities and alternatives




MAY 8, 2012 | SLIDE 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 time




MAY 8, 2012 | SLIDE 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


               Feedback




MAY 8, 2012 | SLIDE 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



               Feedback




MAY 8, 2012 | SLIDE 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.
                  VCS




MAY 8, 2012 | SLIDE 10
OPTIMIZE FOR QUALITY
                             Code Analysis
              Developer



          Build
                             Test Impact Analysis

                  Tests



       Feedback



                  VCS




MAY 8, 2012 | SLIDE 11
TFS11 – CI IMPROVEMENTS
        Build Triggers




MAY 8, 2012 | SLIDE 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
VS11 – CI IMPROVEMENTS
        Continuously Run Unit Tests




        Separate Code Analysis Results window




MAY 8, 2012 | SLIDE 14
VS11 – CI IMPROVEMENTS
        Tracking Builds




MAY 8, 2012 | SLIDE 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 box




MAY 8, 2012 | SLIDE 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
DEALING WITH
      DEPENDENCIES

MAY 8, 2012 | SLIDE 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
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
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 path

MAY 8, 2012 | SLIDE 21
PACKAGE
                         MANAGEMENT

MAY 8, 2012 | SLIDE 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 packages


MAY 8, 2012 | SLIDE 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
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 tag




MAY 8, 2012 | SLIDE 25
DEPENDENCIES VS VCS
        In TFS terms: Source Control
        Today often contains
             Documents
             Binaries
             Tools
             Scripts
             Sources


        Struggling with binary diffs
          Merge conflicts


        Repository size


MAY 8, 2012 | SLIDE 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 dependencies




MAY 8, 2012 | SLIDE 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?
          Mirroring




MAY 8, 2012 | SLIDE 28
Package Restore
      Package & Symbols Publishing

      SOLUTION SETUP


MAY 8, 2012 | SLIDE 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 pushing




MAY 8, 2012 | SLIDE 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.org

MAY 8, 2012 | SLIDE 31
BONUS




                         http://bit.ly/mygetforfree




MAY 8, 2012 | SLIDE 32
Q&A


MAY 8, 2012 | SLIDE 33
THANK YOU FOR JOINING


MAY 8, 2012 | SLIDE 34

More Related Content

What's hot

Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platform
dcjuengst
 

What's hot (20)

Evolution of NuGet
Evolution of NuGetEvolution of NuGet
Evolution of NuGet
 
Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platform
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
Using Node.js to Build for the Enterprise
Using Node.js to Build for the EnterpriseUsing Node.js to Build for the Enterprise
Using Node.js to Build for the Enterprise
 
Expert Day 2019 - HA et SAP : How QA is done
Expert Day 2019 - HA et SAP : How QA is doneExpert Day 2019 - HA et SAP : How QA is done
Expert Day 2019 - HA et SAP : How QA is done
 
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservices
 
Peering Inside the Black Box: A Case for Observability
Peering Inside the Black Box: A Case for ObservabilityPeering Inside the Black Box: A Case for Observability
Peering Inside the Black Box: A Case for Observability
 
Expert Day 2019 - Automated SAP HANA deployments et Terraform
Expert Day 2019 - Automated SAP HANA deployments et TerraformExpert Day 2019 - Automated SAP HANA deployments et Terraform
Expert Day 2019 - Automated SAP HANA deployments et Terraform
 
Expert Day 2019 - SUSE Linux Enterprise 15
Expert Day 2019 - SUSE Linux Enterprise 15Expert Day 2019 - SUSE Linux Enterprise 15
Expert Day 2019 - SUSE Linux Enterprise 15
 
Automated Deployment with Maven - going the whole nine yards
Automated Deployment with Maven - going the whole nine yardsAutomated Deployment with Maven - going the whole nine yards
Automated Deployment with Maven - going the whole nine yards
 
Next Generation Tooling with WSO2 Enterprise Integrator
Next Generation Tooling with WSO2 Enterprise IntegratorNext Generation Tooling with WSO2 Enterprise Integrator
Next Generation Tooling with WSO2 Enterprise Integrator
 
Continuous delivery-with-maven
Continuous delivery-with-mavenContinuous delivery-with-maven
Continuous delivery-with-maven
 
Apache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyApache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT Academy
 
Sencha Products - Coderage Conference
Sencha Products - Coderage ConferenceSencha Products - Coderage Conference
Sencha Products - Coderage Conference
 
How to make your first HoloLens App?
How to make your first HoloLens App?How to make your first HoloLens App?
How to make your first HoloLens App?
 
DSDP Mobile Tools for Java New and Noteworthy
DSDP Mobile Tools for Java New and NoteworthyDSDP Mobile Tools for Java New and Noteworthy
DSDP Mobile Tools for Java New and Noteworthy
 
DSDP Mobile Tools for Java New and Noteworthy
DSDP Mobile Tools for Java New and NoteworthyDSDP Mobile Tools for Java New and Noteworthy
DSDP Mobile Tools for Java New and Noteworthy
 
Project Apash
Project ApashProject Apash
Project Apash
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
 

Viewers also liked

NuGet (anti-)patterns - Tales from the Trenches
NuGet (anti-)patterns - Tales from the TrenchesNuGet (anti-)patterns - Tales from the Trenches
NuGet (anti-)patterns - Tales from the Trenches
Xavier Decoster
 
20111010 agile minds - organize your chickens - nuget for the enterprise
20111010 agile minds - organize your chickens - nuget for the enterprise20111010 agile minds - organize your chickens - nuget for the enterprise
20111010 agile minds - organize your chickens - nuget for the enterprise
Xavier Decoster
 
Visug - organize your chickens - nuget for the enterprise
Visug - organize your chickens - nuget for the enterpriseVisug - organize your chickens - nuget for the enterprise
Visug - organize your chickens - nuget for the enterprise
Xavier Decoster
 
NuGet (Anti-)Patterns - Tales from the Trenches
NuGet (Anti-)Patterns - Tales from the TrenchesNuGet (Anti-)Patterns - Tales from the Trenches
NuGet (Anti-)Patterns - Tales from the Trenches
Xavier Decoster
 

Viewers also liked (8)

Organize your chickens - NuGet for the Enterprise
Organize your chickens - NuGet for the EnterpriseOrganize your chickens - NuGet for the Enterprise
Organize your chickens - NuGet for the Enterprise
 
NuGet (anti-)patterns - Tales from the Trenches
NuGet (anti-)patterns - Tales from the TrenchesNuGet (anti-)patterns - Tales from the Trenches
NuGet (anti-)patterns - Tales from the Trenches
 
20111010 agile minds - organize your chickens - nuget for the enterprise
20111010 agile minds - organize your chickens - nuget for the enterprise20111010 agile minds - organize your chickens - nuget for the enterprise
20111010 agile minds - organize your chickens - nuget for the enterprise
 
Visug - organize your chickens - nuget for the enterprise
Visug - organize your chickens - nuget for the enterpriseVisug - organize your chickens - nuget for the enterprise
Visug - organize your chickens - nuget for the enterprise
 
Organize your Chickens - NuGet for the Enterprise (UGIALTNET)
Organize your Chickens - NuGet for the Enterprise (UGIALTNET)Organize your Chickens - NuGet for the Enterprise (UGIALTNET)
Organize your Chickens - NuGet for the Enterprise (UGIALTNET)
 
NuGet (Anti-)Patterns - Tales from the Trenches
NuGet (Anti-)Patterns - Tales from the TrenchesNuGet (Anti-)Patterns - Tales from the Trenches
NuGet (Anti-)Patterns - Tales from the Trenches
 
Hosting your own NuGet private repository
Hosting your own NuGet private repositoryHosting your own NuGet private repository
Hosting your own NuGet private repository
 
NuGet Package Management Done Right
NuGet Package Management Done RightNuGet Package Management Done Right
NuGet Package Management Done Right
 

Similar to MSDN Live - CI using TFS11 & NuGet

SDC Sweden - Organize your chickens - NuGet for the Enterprise
SDC Sweden - Organize your chickens - NuGet for the EnterpriseSDC Sweden - Organize your chickens - NuGet for the Enterprise
SDC Sweden - Organize your chickens - NuGet for the Enterprise
Maarten Balliauw
 

Similar to MSDN Live - CI using TFS11 & NuGet (20)

Tutorial test driven development with Visual Studio 2012
Tutorial test driven development with Visual Studio 2012Tutorial test driven development with Visual Studio 2012
Tutorial test driven development with Visual Studio 2012
 
SDC Sweden - Organize your chickens - NuGet for the Enterprise
SDC Sweden - Organize your chickens - NuGet for the EnterpriseSDC Sweden - Organize your chickens - NuGet for the Enterprise
SDC Sweden - Organize your chickens - NuGet for the Enterprise
 
c-i
c-ic-i
c-i
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
Moving to Microsoft Visual Basic .NET
Moving to Microsoft Visual Basic .NETMoving to Microsoft Visual Basic .NET
Moving to Microsoft Visual Basic .NET
 
Net Beans
Net BeansNet Beans
Net Beans
 
Net Beans
Net BeansNet Beans
Net Beans
 
JavaOne 2015: 14 Key Lessons, you should learn
JavaOne 2015: 14 Key Lessons, you should learnJavaOne 2015: 14 Key Lessons, you should learn
JavaOne 2015: 14 Key Lessons, you should learn
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery Workshop
 
Xebia deploy it
Xebia deploy itXebia deploy it
Xebia deploy it
 
Drupal Continuous Integration and devops - Beyond Jenkins
Drupal Continuous Integration and devops - Beyond JenkinsDrupal Continuous Integration and devops - Beyond Jenkins
Drupal Continuous Integration and devops - Beyond Jenkins
 
Increasing productivity using visual studio 2017
Increasing productivity using visual studio 2017Increasing productivity using visual studio 2017
Increasing productivity using visual studio 2017
 
235042632 super-shop-ee
235042632 super-shop-ee235042632 super-shop-ee
235042632 super-shop-ee
 
Visual Studio Ceases Support of Add-Ins in Community Previews 14
Visual Studio Ceases Support of Add-Ins in Community Previews 14Visual Studio Ceases Support of Add-Ins in Community Previews 14
Visual Studio Ceases Support of Add-Ins in Community Previews 14
 
Mobile Application Testing in the Cloud - Oct 2012
Mobile Application Testing in the Cloud - Oct 2012Mobile Application Testing in the Cloud - Oct 2012
Mobile Application Testing in the Cloud - Oct 2012
 
Application Performance Monitoring with boom
Application Performance Monitoring with boomApplication Performance Monitoring with boom
Application Performance Monitoring with boom
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Best practices for creating modular Web applications
Best practices for creating modular Web applicationsBest practices for creating modular Web applications
Best practices for creating modular Web applications
 
DevOps - Understanding Core Concepts (Old)
DevOps - Understanding Core Concepts (Old)DevOps - Understanding Core Concepts (Old)
DevOps - Understanding Core Concepts (Old)
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

MSDN Live - CI using TFS11 & NuGet

  • 1. www.realdolmen.com CONTINUOUS INTEGRATION USING & MAY 8, 2012 | SLIDE 1
  • 2. WHO AM I?  Xavier Decoster  Antwerp, Belgium  www.realdolmen.com  Co-founder of MyGet.org  Focus on ALM/Web  http://www.xavierdecoster.com  @xavierdecoster MAY 8, 2012 | SLIDE 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 Happiness MAY 8, 2012 | SLIDE 4
  • 4. Do you speak it? CONTINUOUS INTEGRATION MAY 8, 2012 | SLIDE 5
  • 5. DISCLAIMER  Not saying “my way” must be “your way”  Non-optimal doesn’t mean wrong  Pointing out opportunities and alternatives MAY 8, 2012 | SLIDE 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 time MAY 8, 2012 | SLIDE 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 Feedback MAY 8, 2012 | SLIDE 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 Feedback MAY 8, 2012 | SLIDE 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. VCS MAY 8, 2012 | SLIDE 10
  • 10. OPTIMIZE FOR QUALITY  Code Analysis Developer Build  Test Impact Analysis Tests Feedback VCS MAY 8, 2012 | SLIDE 11
  • 11. TFS11 – CI IMPROVEMENTS  Build Triggers MAY 8, 2012 | SLIDE 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. VS11 – CI IMPROVEMENTS  Continuously Run Unit Tests  Separate Code Analysis Results window MAY 8, 2012 | SLIDE 14
  • 14. VS11 – CI IMPROVEMENTS  Tracking Builds MAY 8, 2012 | SLIDE 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 box MAY 8, 2012 | SLIDE 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. DEALING WITH DEPENDENCIES MAY 8, 2012 | SLIDE 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. 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. 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 path MAY 8, 2012 | SLIDE 21
  • 21. PACKAGE MANAGEMENT MAY 8, 2012 | SLIDE 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 packages MAY 8, 2012 | SLIDE 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. 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 tag MAY 8, 2012 | SLIDE 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 size MAY 8, 2012 | SLIDE 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 dependencies MAY 8, 2012 | SLIDE 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?  Mirroring MAY 8, 2012 | SLIDE 28
  • 28. Package Restore Package & Symbols Publishing SOLUTION SETUP MAY 8, 2012 | SLIDE 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 pushing MAY 8, 2012 | SLIDE 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.org MAY 8, 2012 | SLIDE 31
  • 31. BONUS http://bit.ly/mygetforfree MAY 8, 2012 | SLIDE 32
  • 32. Q&A MAY 8, 2012 | SLIDE 33
  • 33. THANK YOU FOR JOINING MAY 8, 2012 | SLIDE 34

Editor's Notes

  1. Free trial toMyGet Small Subscription