Continuous Integration & the Release Maturity Model

Preview:

DESCRIPTION

Watch the recorded version of this Webinar here: Curious about Continuous Integration? Tune in!Continuous Integration (CI), which is a big part of continuous delivery, is the concept of continuously building and testing software using an automated process. We have learned that utilizing CI could help us catch bugs earlier, enable better visibility, reduce repetitive processes, enable the development team to produce deployable products at a moment's notice, and reduce risk overall.These slides will identify the various levels of continuous integration and delivery with regards to a release maturity of the development team or parent organization.

Citation preview

Agile Release Maturity

Investing in reliable Software Release Management

This webinar is worth 1 PDU

Hosted by cPrime

Today’s PresenterKendrick Burson

Software Engineer since 1997

Agile Development Coach

CI systems consultant

Talk about what?

Agile Release MaturityThis is not a sales presentation for any specific tool, language or framework

It is a selection of practices that can be applied to most software platforms

It is Based on personal experience on various projects with tools used in Java ,C# and C++

This webinar is worth 1 PDU

User Poll 1If you are working on an Agile project, what agile methodology are you using?

1) Not using Agile

2) Scrum

3) eXtreme Programming

4) Feature Driven Development

5) Other

Principles behind the Agile ManifestoWe follow these principles:

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Working software is the primary measure of progress.

Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

Continuous attention to technical excellence and good design enhances agility.

Simplicity--the art of maximizing the amount of work not done--is essential.

The best architectures, requirements, and designs emerge from self-organizing teams.

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Business people and developers must work together daily throughout the project.

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

Release Management ?

The integration and flow of development, testing, deployment, and support of complex software systems

User Poll 2

How often do you release software?1) Daily

2) Every Iteration

3) Quarterly

4) Once or Twice a year

5) Still waiting

Agile Release Maturity

Build Automation

Source Control

Continuous Integration

Continuous DeliveryRelease Automation

Test Automation

AGILE PROCESS MATURITY

The GoalContinuous Delivery

Agile Release Maturity ?

Level 0Source Control

SCM / RCSSCM (Source Code Management)

RCS ( Revision Control System )

Single Repository

Commit to Trunk

Branch For Defect

SCM/RCS Servers

Open Source

Subversion (SVN)

Git

CVS

Mercurial

Commerical

Perforce

ClearCase

AccuRev

TFS

User Poll 3

How many branches of your project are in progress simultaneously?1) Trunk

2) Trunk + Defect

3) Release A, B and C

4) I lost count

Level 1Build Automation

Dependency Management

Resource Management

CompileLogs: Compiler warnings and violations

Database CRUD

Build Automation Frameworks

Make, Cmake

MSBuild

Ant, Nant

Maven

Gradle

Rake

ScriptUnix shell

Vb script

Ruby

Python

User Poll 4

If your project requires a database, how do you manage the version of the database in each installation ?1) Do not interact with database directly (i.e. access

thru separate web service)

2) Manual inspection

3) Row in settings table

4) Automated database versioning tool

Level 2Test Automation

Execute TestsTest Pyramid

Generate ReportsPass, Fail, Skip

Manual

Tests

Test Automation

xUnitJunit, TestNG, Nunit, PHPUnit, QTUnit, PyUnit, Test::Unit, MSTest

GoogleTest

VisualAssert

Database

DBUnit, TSQLUnit

Selenium / Webdriver

WatiN / Watir

SoapUI

TestPartner

Level 3Continuous Integration

What is CI ?Continuous vs Continual

CI is a practiceBroken build is priority #1 for all.

No Commits on broken build.

No Commit and Dash.

A CI Server is a build scheduler and traffic cop

Scheduled CRON job

Event Triggers

External Triggers

CI ServersCommercial

ThoughtworksCruiseControl, Go

AtlassianBamboo

UrbanCodeAnthill Pro

MicrosoftTFS

Jet BrainsTeam City

Electric CloudElectric Commander

MaestroDev

Open SourceJenkins

Hudson

Tinderbox

CDash

Apache Gump

Continuum

BuildDependency Management

Resource Management ConfigurationApp Data

Compile & Link

TestBuild Test Classes

Execute Tests

Generate report

Advanced TestCode Coverage

Instrument application codeExecute with coverage runner

Test Suites (fast, unit, integ, smoke…)

Multiple reportsSeparate coverage reports (unit/integ)Aggregated coverage reports

PackageGenerate deployable artifact

ZIP

Exe

MSI

JAR

WAR

EAR

RPM

DeployIIS

SCP

MSI

TomcatEmbedded (jetty)External (cargo)

VerifyAcceptance Tests

Functional Tests

System Tests

Capacity Tests

User Poll 5

Does your company have a dedicated QA department ?1) Yes

2) No

AnalyzeStatic Code Analysis

Standards ComplianceCustomized rules

Dependency analysis

Complexity analysis

Source Analysis

DynamicCode Coverage

Coberatura, Emma,Clover, Ncover, MSTest, CoverMe, JSCover, …

StaticCoding standards

Sonar

PMD, CPD, Checkstyle, xDepend

Findbugs, CRAP4J, FxCop, StyleCop, Lint, …

CodeCity, JNCSS

Advanced CIMultiple environments

Integration

QA

Staging

Production

Virtualized EnvironmentsClone as necessary

Event TriggerSCM Hook

ALM IntegrationReport build status for code change committed against feature requirement

Agile Release Maturity

Build Automation

Source Control

Continuous Integration

Continuous DeliveryRelease Automation

Test Automation

AGILE PROCESS MATURITY

Level 4Release Automation

Push button release to productionDeploy artifact promoted from CI

Update target database

Configure environment settingsEnvironment agnostic

User Poll 6

Does your company have a dedicated Release/Configuration Management Team ?1) Yes

2) No

Level 5Continuous

Delivery

ArchiveRepository of Release artifacts

Store multiple versions of artifacts

Deploy versions directly from repository

Artifact Repository Servers

Nexus by Sonotype

Artifactory by Jfrog

Archiva by Apache

PublishPush to production

Release Automation

User Poll 7

How long does it take to push a new release to production in your company?1) A few hours

2) The whole weekend

3) About a week

4) A month

5) I’ll tell you when we finish

User Poll 8

How many people are involved in a typical release at your company?1) 1

2) 2-3

3) 4-7

4) 9 or more

5) All hands on deck

Advanced CDAuto Trace Documentation

Full circle document traceDefine / Update StoryDefine / Update TaskCommit code for taskBuild job pass /fail

Build, Test, Package, Deploy, Verify, Analyze, Archive, Publish

Agile Lifecyle Management (ALM)

Jira +Grasshopper

Velocity Platform

TeamForge

Team Foundation Server

Rally

VersionOne

HP

Serena

IBM

Agile Release Maturity

Build Automation

Source Control

Continuous Integration

Continuous DeliveryRelease Automation

Test Automation

AGILE PROCESS MATURITY

Agile Release Maturity

User Survey

How useful was this webinar to you?

Is there anything you would like to know more about in a future webinar?

Q & A

For more information

about Agile and Project Management cPrime has a large selection of white papers and webinars regarding project management including a dedicated section on Agile

http://www.cprime.com/resources

Referencesabout Release Management and Continuous Delivery

Books---------------------------------------------------------------------------------------------------------Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automationhttp://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912/ref=sr_1_1?ie=UTF8&qid=1337550162&sr=8-1

Continuous Integration: Improving Software Quality and Reducing Riskhttp://www.amazon.com/Continuous-Integration-Improving-Software-Reducing/dp/0321336380/ref=sr_1_3?ie=UTF8&qid=1337550162&sr=8-3

Recipes for Continuous Database Integrationhttp://www.amazon.com/Recipes-Continuous-Database-Integration-ebook/dp/B000RH0EI4/ref=sr_1_14?ie=UTF8&qid=1337550162&sr=8-14

Configuration Management Best Practices: Practical Methods that Work in the Real Worldhttp://www.amazon.com/Configuration-Management-Best-Practices-Practical/dp/0321685865/ref=sr_1_12?s=books&ie=UTF8&qid=1337799141&sr=1-12

Enterprise Release Management: Agile Delivery of a Strategic Change Portfoliohttp://www.amazon.com/Enterprise-Release-Management-Strategic-Portfolio/dp/1608071685/ref=sr_1_4?s=books&ie=UTF8&qid=1337799413&sr=1-4

Recommended