SlideShare a Scribd company logo
1 of 33
Download to read offline
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

Evolution of NuGet
Evolution of NuGetEvolution of NuGet
Evolution of NuGetJeff Handley
 
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 Platformdcjuengst
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack SummitMiguel Zuniga
 
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 doneSUSE
 
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 - cfgmgmtcamp2015Simon McCartney
 
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 microservicesLuram Archanjo
 
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 ObservabilityVMware Tanzu
 
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 TerraformSUSE
 
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 15SUSE
 
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 yardsJohn Ferguson Smart Limited
 
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 IntegratorWSO2
 
Apache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyApache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyVolodymyr Ostapiv
 
Sencha Products - Coderage Conference
Sencha Products - Coderage ConferenceSencha Products - Coderage Conference
Sencha Products - Coderage ConferenceSandeep Adwankar
 
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?Shingo Mori
 
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 Noteworthygustavoeliano
 
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 Noteworthydiegomadruga
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesFab L
 

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

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 EnterpriseXavier 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 TrenchesXavier 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 enterpriseXavier 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 enterpriseXavier Decoster
 
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)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 TrenchesXavier Decoster
 
Hosting your own NuGet private repository
Hosting your own NuGet private repositoryHosting your own NuGet private repository
Hosting your own NuGet private repositoryYu GUAN
 
NuGet Package Management Done Right
NuGet Package Management Done RightNuGet Package Management Done Right
NuGet Package Management Done RightSeniorStoryteller
 

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 Continuous Integration Using NuGet and TFS11

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 2012Hong Le Van
 
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 EnterpriseMaarten Balliauw
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous EverythingAndrea Tino
 
Moving to Microsoft Visual Basic .NET
Moving to Microsoft Visual Basic .NETMoving to Microsoft Visual Basic .NET
Moving to Microsoft Visual Basic .NETV Sanchez
 
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 learnACA IT-Solutions
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasKJR
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopMichael Palotas
 
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 JenkinsPromet Source
 
Increasing productivity using visual studio 2017
Increasing productivity using visual studio 2017Increasing productivity using visual studio 2017
Increasing productivity using visual studio 2017Md. Mahedee Hasan
 
235042632 super-shop-ee
235042632 super-shop-ee235042632 super-shop-ee
235042632 super-shop-eehomeworkping3
 
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 14Andrey Karpov
 
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 2012CloudBees
 
Application Performance Monitoring with boom
Application Performance Monitoring with boomApplication Performance Monitoring with boom
Application Performance Monitoring with boomnetage-solutions
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net coreSam Nasr, MCSA, MVP
 
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 applicationspeychevi
 
DevOps - Understanding Core Concepts (Old)
DevOps - Understanding Core Concepts (Old)DevOps - Understanding Core Concepts (Old)
DevOps - Understanding Core Concepts (Old)Nitin Bhide
 

Similar to Continuous Integration Using NuGet and TFS11 (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

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfROWELL MARQUINA
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 

Recently uploaded (20)

How Tech Giants Cut Corners to Harvest Data for A.I.
How Tech Giants Cut Corners to Harvest Data for A.I.How Tech Giants Cut Corners to Harvest Data for A.I.
How Tech Giants Cut Corners to Harvest Data for A.I.
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdf
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 

Continuous Integration Using NuGet and TFS11

  • 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