0% found this document useful (0 votes)
43 views13 pages

Software Construction: Continuous Integration

This document discusses continuous integration, which is a software engineering practice where developers regularly merge their code changes into a central repository after which automated builds and tests are run. It notes that continuous integration helps reduce integration problems by detecting issues early. Key aspects covered include the benefits of continuous integration, typical continuous integration processes and infrastructure, and examples of continuous integration tools.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
43 views13 pages

Software Construction: Continuous Integration

This document discusses continuous integration, which is a software engineering practice where developers regularly merge their code changes into a central repository after which automated builds and tests are run. It notes that continuous integration helps reduce integration problems by detecting issues early. Key aspects covered include the benefits of continuous integration, typical continuous integration processes and infrastructure, and examples of continuous integration tools.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

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

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy