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.
4. Talk about what?
Agile Release Maturity
This 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
5. User Poll 1
If 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
6. Principles behind the Agile Manifesto
We follow these principles:
Our highest priority is to satisfy the Working software is the primary measure of
customer through early and continuous progress.
delivery of valuable software.
Agile processes promote sustainable development.
Welcome changing requirements, even late in The sponsors, developers, and users should be
development. Agile processes harness change for able to maintain a constant pace indefinitely.
the customer's competitive advantage.
Continuous attention to technical excellence and
Deliver working software frequently, from a good design enhances agility.
couple of weeks to a couple of months, with a
preference to the shorter timescale. Simplicity--the art of maximizing the amount
of work not done--is essential.
Business people and developers must work
together daily throughout the project. The best architectures, requirements, and designs
emerge from self-organizing teams.
Build projects around motivated individuals. Give
them the environment and support they need, and At regular intervals, the team reflects on how to
trust them to get the job done. become more effective, then tunes and adjusts its
behavior accordingly.
The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.
7. Release Management ?
The integration and flow of development, testing,
deployment, and support of complex software
systems
8. 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
9. Agile Release Maturity
Continuous Delivery
Release Automation
Continuous Integration
Test Automation
Build Automation
Source Control
17. 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
18. Level 2
Test Automation
Manual
Tests
Execute Tests
Test Pyramid
Generate Reports
Pass, Fail, Skip
21. What is CI ?
Continuous vs Continual
CI is a practice
Broken 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
22. CI Servers
Commercial Open Source
Thoughtworks Jenkins
CruiseControl, Go Hudson
Atlassian Tinderbox
Bamboo
CDash
UrbanCode
Apache
Anthill Pro
Gump
Microsoft
TFS
Continuum
Jet Brains
Team City
Electric Cloud
Electric Commander
MaestroDev
32. Advanced CI
Multiple environments
Integration
QA
Staging
Production
Virtualized Environments
Clone as necessary
Event Trigger
SCM Hook
ALM Integration
Report build status for code change committed against feature
requirement
33. Agile Release Maturity
Continuous Delivery
Release Automation
Continuous Integration
Test Automation
Build Automation
Source Control
34. Level 4
Release Automation
Push button release to production
Deploy artifact promoted from CI
Update target database
Configure environment settings
Environment agnostic
35. User Poll 6
Does your company have a dedicated
Release/Configuration Management
Team ?
1) Yes
2) No
40. 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
41. 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
42. Advanced CD
Auto Trace Documentation
Full circle document trace
Define / Update Story
Define / Update Task
Commit code for task
Build job pass /fail
Build, Test, Package, Deploy, Verify, Analyze, Archive, Publish
43. Agile Lifecyle Management
(ALM)
Jira +Grasshopper Rally
Velocity Platform VersionOne
TeamForge HP
Team Foundation Server Serena
IBM
44. Agile Release Maturity
Continuous Delivery
Release Automation
Continuous Integration
Test Automation
Build Automation
Source Control
48. 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
49. References
about Release Management and Continuous Delivery
Books
---------------------------------------------------------------------------------------------------------
Continuous Delivery: Reliable Software Releases through Build, Test, and
Deployment Automation
http://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 Risk
http://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 Integration
http://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 World
http://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
Portfolio
http://www.amazon.com/Enterprise-Release-Management-Strategic-
Portfolio/dp/1608071685/ref=sr_1_4?s=books&ie=UTF8&qid=1337799413&sr=1-
4
A release manager is:Facilitator: serves as a liaison between varying business units to guarantee smooth and timely delivery of software products or updates.Gatekeeper: “holds the keys” to production systems/applications and takes responsibility for their implementations.Architect: helps to identify, create and/or implement processes or products to efficiently manage the release of code.Server application support engineer: help troubleshoot problems with an application (although not typically at a code level).Coordinator: utilized to coordinate disparate source trees, projects, teams and components.Build Engineering : How to compile, link, package and deploy software products reliably and repeatablyContinuous or Continual !Integration vsDelivery What is CIWhat is CDWhat is
Agile Maturity Model Processes and Practices in Agile Project ManagementBuild EngineeringContinuous Integration
Most teams are not ready to adopt every practice we are going to discussEvery team should start somewhereFind the strata that best fits your current environment.
SCM (Source Code Management) RCS ( Revision Control System )
Single click build (dbl click)
Reports for unit tests passed, failed, skipped.Trend reports and historical analysisDiagnostic information for failed tests.
Selenium / WebdriverCross platform web browser control frameworksWatiN / WatirWatiN: Web application testing in .NetWatir: Web application testing in RubySoapUISOAP and REST web service testing
Reports for unit tests passed, failed, skipped.Trend reports and historical analysisDiagnostic information for failed tests.
Dependency ManagementResource Management (config files)Compile & Link
Dependency ManagementResource Management (config files)Compile & Link
Dependency ManagementResource Management (config files)Compile & Link
Dependency ManagementResource Management (config files)Compile & Link
Dependency ManagementResource Management (config files)Compile & Link
Dependency ManagementResource Management (config files)Compile & Link
Dependency ManagementResource Management (config files)Compile & Link
Build Server is a glorified scheduler. Shedule Trigger Polling SCM External Trigger Related build completes
Agile Maturity Model Processes and Practices in Agile Project ManagementBuild EngineeringContinuous Integration