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
Continuous Integration, v1.2 IMVS, M. Kropp 2
Institute for Mobile and Distributed Systems M. Kropp 1
Software Construction Continuous Integration
Agenda
Why Integration?
What is Continuous Integration?
Continuous Integration Process
CI Infrastructure
CI Tools
Continuous Integration, v1.2 IMVS, M. Kropp 3
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
Continuous Integration, v1.2 IMVS, M. Kropp 4
Institute for Mobile and Distributed Systems M. Kropp 2
Software Construction Continuous Integration
Integration Challenges
Integration occurs when changes
are merged with the source code
repository
Module 1 Module 2 Module 3 Module 3 Module 4
System A System B
Integration occurs at
interfaces Shared Module
Continuous Integration, v1.2 IMVS, M. Kropp 5
Broken Integration
You have a broken integration when:
Source code server does not build successfully
Shared component works in one system, but breaks
others
Unit tests fail
Code quality fails (coding conventions, quality
metrics)
Deployment fails
The earlier you can detect problems, the easier it is to
resolve them
Continuous Integration, v1.2 IMVS, M. Kropp 6
Institute for Mobile and Distributed Systems M. Kropp 3
Software Construction Continuous Integration
Manual Integration
Integration becomes expensive
if made manual (build, test, deployment, )
with too less checkins (hours or days)
If integration problems and bugs are detected too late
Reduces desire to refactor
Long time between integration increases risk of
merge
IDE makes many cross-cutting changes easy
Continuous Integration, v1.2 IMVS, M. Kropp 7
What Is Continuous 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
The macro process of object-oriented development is one of "continuous
integration." ... At regular intervals, the process of "continuous integration"
yields executable releases that grow in functionality at every release. ... It is
through these milestones that management can measure progress and quality, and
hence anticipate, identify, and then actively attach risks on an ongoing basis.
Grady Booch, Object-Oriented Analysis and Design with Applications
Continuous Integration, v1.2 IMVS, M. Kropp 8
Institute for Mobile and Distributed Systems M. Kropp 4
Software Construction Continuous Integration
Practices of Continuous Integration
Maintain a Single Source Repository.
Automate the Build
Make Your Build Self-Testing
Everyone Commits Every Day
Every Commit Should Build the Mainline on an Integration Machine
Keep the Build Fast
Test in a Clone of the Production Environment
Make it Easy for Anyone to Get the Latest Executable
Everyone can see what's happening
Automate Deployment
From http://martinfowler.com/articles/continuousIntegration.html
Continuous Integration, v1.2 IMVS, M. Kropp 9
Embrace Continuous Integration
What is Continuous Integration
Get latest
Build Run Test Send Report
version
VCS
Integration server monitors source repository
Rebuilds with every change
Runs all unit and acceptance tests
Publishes build results
Notifies developers if build breaks
Labels successful builds in source repository
Continuous Integration, v1.2 IMVS, M. Kropp 10
Institute for Mobile and Distributed Systems M. Kropp 5
Software Construction Continuous Integration
Continuous Integration Prerequisites
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
Continuous Integration Infrastructure
Monitors projects/paths
in source repository
build server vcs server
Development
Deployment Server
Build Script
-Get latest version
Executes tasks on - Build
schedule/event - Code Audit
-Unit Test
-Code Coverage build report
-Deploy
Get local copies /
developers
Commit changes
Continuous Integration, v1.2 IMVS, M. Kropp 12
Institute for Mobile and Distributed Systems M. Kropp 6
Software Construction Continuous Integration
Realizing Continuous Integration
Monitors a VCS repository for changes
CVS = check for commits in the repository since last build time
If changes are found, then on a schedule start the build
Build your application
through your existing Ant or Maven scripts
Run your xUnit Test suite
Run code audit tools
Checkstyle, code coverage,
Report on the build results
send formatted email notifications
publish results to a website
(Optionally) publish the application
Configuration is through a central XML file
Continuous Integration, v1.2 IMVS, M. Kropp 13
What is a Successful Build?
When is your build successful?
When it compiles?
When all the unit-tests have run?
When it has been deployed?
In fact, every failure is a success
You have exposed a potential problem early!
Continuous Integration, v1.2 IMVS, M. Kropp 14
Institute for Mobile and Distributed Systems M. Kropp 7
Software Construction Continuous Integration
The Agile Process
Continuous Integration is only one aspect of an overall
process. For it to work best, you need to:
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!
Continuous Integration, v1.2 IMVS, M. Kropp 15
CI Benefits
Reduced Risks
Always aware of current status of the project
Less time spent investigating integration bugs
Integration testing performed early
Integration bugs caught early
Less time wasted because of broken code in version control system
Broken builds caught early
Prove your system can build!
Increase code quality with additional tasks
Discover potential deployment issues
Continuous Integration, v1.2 IMVS, M. Kropp 16
Institute for Mobile and Distributed Systems M. Kropp 8
Software Construction Continuous Integration
CI Obstacles
Tough to move an existing system into CI
Systems that rely on server components
(BizTalk, Sharepoint, etc.)
Db-based systems need to be up-to-dated
Continuous Integration, v1.2 IMVS, M. Kropp 17
A CI Tool: CruiseControl
Continuous Integration, v1.2 IMVS, M. Kropp 18
Institute for Mobile and Distributed Systems M. Kropp 9
Software Construction Continuous Integration
Monitoring
CruiseControl
Continuous Integration Server
Integrates building, unit tests, code coverage,
analysis, .
Provides the ability to hook in almost any output.
Gives instant knowledge of status of builds.
Provides dashboard like integration for multiple
projects
Continuous Integration, v1.2 IMVS, M. Kropp 19
CruiseControl Build Status
Continuous Integration, v1.2 IMVS, M. Kropp 20
Institute for Mobile and Distributed Systems M. Kropp 10
Software Construction Continuous Integration
Cruise Control Components
CI Server
Monitors the cvs
Executes the build script
Configuration File
Dashboard
Build report viewer
Email Notification
Continuous Integration, v1.2 IMVS, M. Kropp 21
CI Add Ons
Code Coverage Cobertura
Works with JUnit or any Java classes
Uses instrumentation within Ant or the command
line
Integrated into build process via <cobertura-
instrument> task
Dependency Management with IVY
Similar like Maven
Ant based
Continuous Integration, v1.2 IMVS, M. Kropp 22
Institute for Mobile and Distributed Systems M. Kropp 11
Software Construction Continuous Integration
Some Popular CI Tools
Cruise Control (OS)
http://cruisecontrol.sourceforge.net/
Anthill Pro (Com)
http://www.anthillpro.com/
Continuum (OS)
http://maven.apache.org/continuum/
Pulse (Com)
http://www.zutubi.com/
Luntbuild (OS)
http://luntbuild.javaforge.com/
ParaBuild Server (Com)
http://www.viewtier.com/index.htm
Continuous Integration, v1.2 IMVS, M. Kropp 23
Resources
Martin Fowler about CI
http://www.martinfowler.com/articles/continuousIntegration.html
Wiki
http://c2.com/cgi/wiki?ContinuousIntegration
Continuous Integration, v1.2 IMVS, M. Kropp 24
Institute for Mobile and Distributed Systems M. Kropp 12
Software Construction Continuous Integration
Summary
Continually integrate and test to reduce risk
Detect problems early
Always have a deployable build
Generate metrics to guide project management
Continuous Integration is:
A good practice in any software development method
Vital for agile development
Continuous Integration, v1.2 IMVS, M. Kropp 25
Institute for Mobile and Distributed Systems M. Kropp 13