SlideShare a Scribd company logo
Implementing Continuous Integration in
.NET for cheapskates
Matt Henroid
@mhenroid
November 13, 2015
Implementing Continuous Integration in .NET for Cheapskates
3
• Intro to Continuous Integration
• Environment Setup
• Source Control
• Automated Build
• Build Server
• Automated Testing
• Automated Deployment
Agenda
4
cheapskate
A stingy person. Somebody who buys cheap in favor of
higher quality or better stuff. Even though they might be
able to afford better…
by verseguru August 20, 2004
http://urbandictionary.com
What is a cheapskate?
5
frugal developer
A developer who encourages
• Saving money by favoring free, open source or
inexpensive but high quality tools whenever possible
• Saving time by automating processes as much as
possible
• Saving yourself from disaster by mitigating the
inevitable risk that comes with continuous changes to
software projects.
What is a cheapskate?
6
• Code new features
• Build, Test and Deploy* automatically
• Repeat
* Deploy to test environment, not to production (i.e. continuous delivery)
What is Continuous Integration?
7
• Reduces integration problems
• Reduce mistakes from manual processes
• Promotes rapid feedback
• Promotes testable software
Benefits of Continuous Integration
8
CI - It’s Not Rocket Science
9
• Practices
– Things you and your team should do
• Automation
– Eliminate repetitive boring work
– Reduces human errors
– Reproducible every time
• Tools
– Numerous free / open source tools available
CI = Practices + Automation + Tools
10
• Purpose
– Enable testing in multiple staged environments
• Practices
– Create multiple environments
• Small project – DEV, INTG, PROD
• Medium project – DEV, INTG, QA, PROD
• Large project – DEV, INTG, QA, UAT, PROD
– Keep all environments similar
– Automate server setup
– Support data replication
Environment Setup
11
• Purpose
– Keep track of all source code changes
• Practices
– Store all artifacts required to build project
– Fresh checkout should always be buildable
– Avoid storing unnecessary artifacts
• Use ignore file / feature
– Use package management to store dependencies
– Define branching / merging strategy
– Commit early and often (daily, hourly)
Source Control
12
Source Control - Demo
https://github.com/mhenroid/CIDemo
13
• Purpose
– Ensure build can be done without human interaction
• Practices
– Automate the entire build process
– Use a build server to build on every commit
– Keep the build fast
– Don’t break the build
– Fix broken builds immediately
Automated Build
PowerShell MSBuild
14
• Purpose
– Watch for changes to source control
– Perform build / test / deployment automatically
• Benefits
– Provide stable, reproducible environment for builds
– Ensure no check-in breaks the build
– Easily determine who broke the build
– Reporting
Build Server
15
• NAnt / MSBuild
• Cruise Control
Automated Build - Demo
16
• Purpose
– Test your code continuously and automatically
– Test conditions that may be difficult to reproduce
from UI
• Practices
– Unit test – class / method level
– Integration test – test multiple classes together
– Enable tests to execute on build server
– Use Code Coverage to verify test coverage
– All tests should pass
Automated Testing
17
• Test Framework
– MSTest
• Mock Framework
– Moq
• Code Coverage
– Open Cover
Automated Testing - Demo
18
• Purpose
– Package project artifacts and deploy to environment
– Enables immediate testing on non-developer machine
• Benefits
– Reproducible
– Deploy automatically
– Testers can provide feedback more quickly
– First step towards Continuous Delivery
Automated Deployment
19
Automated Deployment - Demo
20
Questions???
Implementing Continuous Integration in .NET for Cheapskates

More Related Content

PDF
Introduction to Continuous Integration
PPTX
Continuous Integration and Delivery
PPTX
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
PDF
Continuous Integration
PPTX
TFS Build - Continuous Integration
PPTX
CI with TFS
ZIP
Introduction To Continuous Integration
PPTX
Intro to Continuous Integration
Introduction to Continuous Integration
Continuous Integration and Delivery
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Continuous Integration
TFS Build - Continuous Integration
CI with TFS
Introduction To Continuous Integration
Intro to Continuous Integration

What's hot (20)

PPTX
Continuous integration
PDF
Quickstart for continuous integration
PDF
Continuous integrations - Basics
PPT
Continuous Integration and Builds
PDF
Merge hells - Feature Toggles to the rescue
PDF
Usg Web Tech Day 2016 - Continuous Integration, Deployment, and Delivery
PPTX
Continuous integration, delivery & deployment
PDF
2016 09-dev opsjourney-devopsdaysoslo
PPTX
Continuous Delivery With Team Foundation Server
PDF
Val lines - Agile Testing in a Legacy World
ZIP
Continuous Integration, Build Pipelines and Continuous Deployment
PDF
Continuous Everything @ dotnet cologne 2019
PPTX
AgileLINC Continous Slides by Daniel Harp
PPTX
Continuous delivery in practice (public)
PDF
PDF
Continuous delivery - tools and techniques
PPTX
Introduction to Application insights
PPTX
Taking your version control to a next level with TFS and Git
PPTX
Software engineering
KEY
Continuous Integration, the minimum viable product
Continuous integration
Quickstart for continuous integration
Continuous integrations - Basics
Continuous Integration and Builds
Merge hells - Feature Toggles to the rescue
Usg Web Tech Day 2016 - Continuous Integration, Deployment, and Delivery
Continuous integration, delivery & deployment
2016 09-dev opsjourney-devopsdaysoslo
Continuous Delivery With Team Foundation Server
Val lines - Agile Testing in a Legacy World
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Everything @ dotnet cologne 2019
AgileLINC Continous Slides by Daniel Harp
Continuous delivery in practice (public)
Continuous delivery - tools and techniques
Introduction to Application insights
Taking your version control to a next level with TFS and Git
Software engineering
Continuous Integration, the minimum viable product
Ad

Viewers also liked (17)

PDF
Agile Systems Admin
PPTX
The art of .net deployment automation
PPTX
I gotta dependency on dependency injection
PPTX
The art of wmb deployment automation
PDF
Test driven development
PPTX
Agile .NET Development with BDD and Continuous Integration
ODP
Buildbot
PPTX
Domain's Robot Army
KEY
Improving code quality with continuous integration (PHPBenelux Conference 2011)
PDF
Core Principles Of Ci
PPTX
Ideal Deployment In .NET World
PPT
Scrum and Test-driven development
PPTX
Integration with Docker and .NET Core
PPT
Continuous integration
PPT
C#/.NET Little Wonders
PPT
Continuous Integration (Jenkins/Hudson)
PPT
Design Patterns (Examples in .NET)
Agile Systems Admin
The art of .net deployment automation
I gotta dependency on dependency injection
The art of wmb deployment automation
Test driven development
Agile .NET Development with BDD and Continuous Integration
Buildbot
Domain's Robot Army
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Core Principles Of Ci
Ideal Deployment In .NET World
Scrum and Test-driven development
Integration with Docker and .NET Core
Continuous integration
C#/.NET Little Wonders
Continuous Integration (Jenkins/Hudson)
Design Patterns (Examples in .NET)
Ad

Similar to Implementing Continuous Integration in .NET for Cheapskates (20)

PPTX
Introduction to Continuous Integration
PPTX
Continuous integration
PDF
Agile Engineering Best Practices by Richard Cheng
PPTX
Continuous integration CloudParty 21 may 2014 - Milan
PPT
Continuous deployment steve povilaitis
PPTX
Continuous Integration Testing for SAP
PDF
Continuous Everything
PDF
Continuous integration (eng)
PDF
Flight East 2018 Presentation–Continuous Integration––An Overview
PDF
Hyd virtual meetupslides11jul
PPT
Continuous Integration: A Case Study
PPTX
Test Driven Development & CI/CD
PPTX
Continuous Delivery for Open Source Java projects
PDF
Agile Secure Cloud Application Development Management
PDF
Continuous integration
PPTX
Agile Engineering Sparker GLASScon 2015
PDF
Continuous Everything v2.0
PPT
Continous Integration: A Case Study
PPTX
Hudson
 
Introduction to Continuous Integration
Continuous integration
Agile Engineering Best Practices by Richard Cheng
Continuous integration CloudParty 21 may 2014 - Milan
Continuous deployment steve povilaitis
Continuous Integration Testing for SAP
Continuous Everything
Continuous integration (eng)
Flight East 2018 Presentation–Continuous Integration––An Overview
Hyd virtual meetupslides11jul
Continuous Integration: A Case Study
Test Driven Development & CI/CD
Continuous Delivery for Open Source Java projects
Agile Secure Cloud Application Development Management
Continuous integration
Agile Engineering Sparker GLASScon 2015
Continuous Everything v2.0
Continous Integration: A Case Study
Hudson
 

Recently uploaded (20)

PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
KodekX | Application Modernization Development
PDF
Unlocking AI with Model Context Protocol (MCP)
PPT
Teaching material agriculture food technology
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Cloud computing and distributed systems.
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Electronic commerce courselecture one. Pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Spectral efficient network and resource selection model in 5G networks
KodekX | Application Modernization Development
Unlocking AI with Model Context Protocol (MCP)
Teaching material agriculture food technology
Dropbox Q2 2025 Financial Results & Investor Presentation
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Cloud computing and distributed systems.
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Building Integrated photovoltaic BIPV_UPV.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Weekly Chronicles - August'25 Week I
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Machine learning based COVID-19 study performance prediction
Electronic commerce courselecture one. Pdf

Implementing Continuous Integration in .NET for Cheapskates

  • 1. Implementing Continuous Integration in .NET for cheapskates Matt Henroid @mhenroid November 13, 2015
  • 3. 3 • Intro to Continuous Integration • Environment Setup • Source Control • Automated Build • Build Server • Automated Testing • Automated Deployment Agenda
  • 4. 4 cheapskate A stingy person. Somebody who buys cheap in favor of higher quality or better stuff. Even though they might be able to afford better… by verseguru August 20, 2004 http://urbandictionary.com What is a cheapskate?
  • 5. 5 frugal developer A developer who encourages • Saving money by favoring free, open source or inexpensive but high quality tools whenever possible • Saving time by automating processes as much as possible • Saving yourself from disaster by mitigating the inevitable risk that comes with continuous changes to software projects. What is a cheapskate?
  • 6. 6 • Code new features • Build, Test and Deploy* automatically • Repeat * Deploy to test environment, not to production (i.e. continuous delivery) What is Continuous Integration?
  • 7. 7 • Reduces integration problems • Reduce mistakes from manual processes • Promotes rapid feedback • Promotes testable software Benefits of Continuous Integration
  • 8. 8 CI - It’s Not Rocket Science
  • 9. 9 • Practices – Things you and your team should do • Automation – Eliminate repetitive boring work – Reduces human errors – Reproducible every time • Tools – Numerous free / open source tools available CI = Practices + Automation + Tools
  • 10. 10 • Purpose – Enable testing in multiple staged environments • Practices – Create multiple environments • Small project – DEV, INTG, PROD • Medium project – DEV, INTG, QA, PROD • Large project – DEV, INTG, QA, UAT, PROD – Keep all environments similar – Automate server setup – Support data replication Environment Setup
  • 11. 11 • Purpose – Keep track of all source code changes • Practices – Store all artifacts required to build project – Fresh checkout should always be buildable – Avoid storing unnecessary artifacts • Use ignore file / feature – Use package management to store dependencies – Define branching / merging strategy – Commit early and often (daily, hourly) Source Control
  • 12. 12 Source Control - Demo https://github.com/mhenroid/CIDemo
  • 13. 13 • Purpose – Ensure build can be done without human interaction • Practices – Automate the entire build process – Use a build server to build on every commit – Keep the build fast – Don’t break the build – Fix broken builds immediately Automated Build PowerShell MSBuild
  • 14. 14 • Purpose – Watch for changes to source control – Perform build / test / deployment automatically • Benefits – Provide stable, reproducible environment for builds – Ensure no check-in breaks the build – Easily determine who broke the build – Reporting Build Server
  • 15. 15 • NAnt / MSBuild • Cruise Control Automated Build - Demo
  • 16. 16 • Purpose – Test your code continuously and automatically – Test conditions that may be difficult to reproduce from UI • Practices – Unit test – class / method level – Integration test – test multiple classes together – Enable tests to execute on build server – Use Code Coverage to verify test coverage – All tests should pass Automated Testing
  • 17. 17 • Test Framework – MSTest • Mock Framework – Moq • Code Coverage – Open Cover Automated Testing - Demo
  • 18. 18 • Purpose – Package project artifacts and deploy to environment – Enables immediate testing on non-developer machine • Benefits – Reproducible – Deploy automatically – Testers can provide feedback more quickly – First step towards Continuous Delivery Automated Deployment

Editor's Notes

  • #2: Senior Consultant / Application Architect at Daugherty Business Solutions Talk about 2 of my favorite topics… Lead team of developers for client and use CI as part of our project
  • #7: Continuous Integration at its simplest… Writing code, check-in, build, test, deploy and repeat
  • #8: Integration Problems – caused by multiple developers check-ins, code not working in other environments Reduce manual mistakes – ??? Rapid feedback – shorten time needed to deploy code to working environment Testable software – gives developers more confidence in changes and reduces errors
  • #10: Simple formula for Continuous Integration
  • #11: Number of environments depends on size and complexity of project Keep environments similar to make debugging issues easier If possible, automate server setup so you can spin up new environments easily (cloud) Supporting replication of data (while not always possible) makes it easier to reproduce bugs from production
  • #12: NuGet supports local / offline private feeds
  • #13: Github (free for publicly visible projects) .gitignore NuGet Automated package restore – Visual Studio build, command line, MSBuild Offline / Private respositories