Overview

What is Continuous Integration?

  • Counter Examples
  • Goals
  • Terms/Vocabulary

How do you do it?

  • Techniques
  • Tools

How do I get there?

  • My World

What is Continuous Integration?
  Counter Examples

  • Vertical segregation (service/theme teams)
  • Horizontal segregation (i.e. UI, database, API)
  • Code segregation (multiple repositories)
  • Extended, single pass release cycle

What is Continuous Integration?
  Goals

  • Increase individual contributor efficiency
  • Increase visibility
  • Increase confidence/courage (© John Tripp)
  • Reduce time to identify errors (fail fast)
  • Reduce deployment overhead
  • Reduce cycle time (concept to cash)

What is Continuous Integration?
  Terms/Vocabulary

  • CI: Continuous Integration
  • CI Server/Build Server: Tool for automating building and testing (Bamboo, Jenkins, TFS, etc.)
  • Virtualization: Ability to create a clone of your production environment
  • VCS: Version control system, used for branching and merging source code
  • Gated check-ins: Method of only committing code to mainline after passing set criteria

How do you do it?
  Techniques

  • Frequent commits to mainline (at least once a day)
  • Maintain an always deployable mainline
  • Have constant, automatic, fast, self-testing builds
  • Automate deployments to a clone of production (fresh virtualized environment)
  • Protect parallel work through quality gates
  • Give high visibility to build information (status, metrics, etc.)

How do you do it?
  Tools

VCS

  • TFS
  • SVN
  • Git
  • Mercurial

How do you do it?
  Tools

CI Server

  • TFS
  • Bamboo
  • Jenkins
  • TeamCity

How do you do it?
  Tools

Gated Check-ins

  • TFS (explicitly)
  • Go
  • Bamboo
  • Git
  • Emma
  • Crucible

How do you do it?
  Tools

Environment Management

  • SmartCloud
  • AWS

How do I get there?
  My World

Toyota Kata

“the systematic pursuit of desired conditions by utilizing human capabilities in a concerted way”

  • In consideration of a vision or direction...
  • Grasp the current condition.
  • Define the next target condition.
  • Move toward that target condition iteratively, which uncovers obstacles that need to be worked on.

How do I get there?
  My World

Current Focus

  • More environments
  • More realistic environments
  • Faster builds
  • More automation
  • Better visibility

How do I get there?
  My World

Current Obstacles

  • Poor version management
  • Inconsistent code coverage/testing strategies
  • Virtualization strategy staled
  • No roadmap for configuration management

How do I get there?
  My World

Current Initiatives

  • VCS migration and education
  • CI upgrade
  • Continuous Quality Dashboard
  • Quality standardization
  • Build improvement...

How do I get there?
  My World

Build Improvement

  • Segregation of building and packaging
  • Modular separation
  • Artifact management (Artifactory)
  • Build tool migration

Questions???

The Deployinator!!!