Continuous Integration Roadmap
The intent of the session was to brainstorm a working maturity roadmap for Continuous Integration. Participants first agreed on maturity as a model - from intro to advanced. The idea is to have a sense of CI practices, things you can do with CI. This can be useful when:
- You are getting started with CI, and you want to know what's possible - what kinds of things can you do with CI,
- You have started using CI, and you're trying to evaluate what might be the next value vs. effort thing you could do,
- You want to sell CI to your organization, and need to give a sense of what can be achieved.
- Agree on a continuum model for the discussion - maturity was chosen,
- Brainstorm all sorts of tasks and things that can be done with CI and project automation,
- Brainstorm a set of categories - chosen: Intro, Novice, Intermediate, Advanced, Insane
- Group sort tasks to categories - all tasks written on post-its - group came up to the wall and organized tasks under categories. Light discussion - no fistfights.
- Group made a pass through the categories - organizing within each category by value, adding missing tasks, shifting tasks across categories as needed.
The resulting roadmap itself is pretty useful. It should NOT be interpreted as prescriptive. Another critical observation from participants was that our concept of CI has matured in recent years. The tasks represented were as much about project automation/efficiency as they were CI. Do we need a new name for CI? Project Automation? Continuous Automation?
Roadmap Diagram - See the photostream. Note that each for each stage (intro, novice, etc.) the tasks are arranged in order of value - highest on top.
Brainstorm items: Start: • Assume VCS/Repository
• Night builds
• Automated deployments
• Bounce Server
• Unit test suits
• Collect code coverage
• Smoke test by environment
• Generating a release candidate
• Flagging CI build as release candidate
• Generate delta log (Defect/VCS comments)
• Dependency management
• Build activity metrics/alerts/thresholds (when CI is not working)
• Static analysis
• Generate documentation
• Purify/bounds cheders (dynamic)
• Fortify – static analysis
• Identify problem code/classes
• Defect analysis
• Theme: Judging quality of a build
• Auto-update defect tracking. Integration with lifestyle tools
• Javadoc generation/publishing
• Automate deployment -SQA – DEV
• Automated functional testing (ex. FIT)
• Business visibility for manual test results
• Environment monitoring Dependency management
• Product activity metrics (churn, check in)
• Code integrity (duplicated, defects, remove unused code)
• Change reporting – SQA impacts
• Pre-commit builds
• Multi-threading/scalable build system
• User of wiki to communicate current issues
• Defect tracking
• VCS – tracking build
• Auto deploy to production
• Auto roll-back in production
Remade the categories without bunching up topics to get back that nice bell curve look and posted out on my blog.