Software Construction: Continuous Integration
Software Construction: Continuous Integration
Software Construction
Continuous Integration
Martin Kropp
University of Applied Sciences Northwestern Switzerland
Institute for Mobile and Distributed Systems
Learning Target
You
can explain the importance of continuous
integration (CI)
know what Continuous Integration is
can explain the beneftis of CI
can describe a typical CI environment
can setup and use a CI tool
Agenda
Why Integration?
What is Continuous Integration?
Continuous Integration Process
CI Infrastructure
CI Tools
Integration
Integration is
Making different modules work together
Modularization
enables team development
makes complex systems manageable
Modules have to work together
i.e. they must be integrated
Integrated Modules do successfully
compile
run
pass test
deploy
Integration Challenges
System A System B
Integration occurs at
interfaces Shared Module
Broken Integration
Manual Integration
Some Definitions
An important part of any software development process is getting reliable builds of
the software. Despite it's importance, we are often surprised when this isn't done.
We stress a fully automated and reproducible build, including testing, that runs
many times a day. This allows each developer to integrate daily thus reducing
integration problems.
Martin Fowler and Matthew Foemmel, Continuous Integration
Get latest
Build Run Test Send Report
version
VCS
Tools needed
VCS server
Build server
Deployment Server
Automation tools
CI tools
Work Process
Commit/Update often (each change)
Run often
Write test
Run test often
Common code ownership
Continuous Integration, v1.2 IMVS, M. Kropp 11
Monitors projects/paths
in source repository
Build Script
Plan iteratively
schedule regular releases with evolving levels of functionality
(CRs)
be wary of inflexible Change Control Boards!
Implement incrementally
identify and implement small work tasks
refactor if necessary!
Report proactively
identify exactly the contents (CIs) of any build, in both file and
content
automate reports!
CI Benefits
Reduced Risks
CI Obstacles
A CI Tool: CruiseControl
Monitoring
CruiseControl
Continuous Integration Server
Integrates building, unit tests, code coverage,
analysis, .
Provides the ability to hook in almost any output.
CI Server
Monitors the cvs
Executes the build script
Configuration File
Dashboard
Build report viewer
Email Notification
CI Add Ons
Resources
Summary