Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Continuous Integration, Deployment, Delivery

No description
by

Diego Pamio

on 24 October 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Continuous Integration, Deployment, Delivery

Continuous Integration, Deployment, Delivery
Software IS complex
2. SOFTWARE
+
You are here
The early Days of Configuration Management
Configuration Identification
Configuration control
Configuration status accounting
Configuration verification & audit
Product Integration
CMMI, DoD, IEEE and CM: The good Parts
Elements of a good Change Control System
Rationale for the Change
Change made
Reversibility
Attribution
Auditability
Change Control - The old days
Change "Requests" (Form)
Change Control Board (Comitee)
CCB Meetings
High Level artifacts
Revision History Tables
Change Control - Reinvented
File-level artifacts
Attribution: Commit author
Rationale: Commit message
Reversibility: Versioning tool
Change made: Diff
Auditability: Versioning log
Change Control
Rise, Dawn and rebirth of Branching
90's
2000's
2010's
Today
Everybody working in the same code line.
Spiderman would be jealous of our version tree.
Branches are evil
Git-Workflow, short-lived branches for everything.
Branching
Continuous Integration: The Elements
Automated Build
a Versioned source base
Test each build
Each commit should build, commits shall be frequent
Fast Builds
Build Output
Continuous Deployment
Continuous Build + :
Deploy to "Production-like Environment" on each commit

Ready to be "used", tested, touched, sensed, analyzed, by relevant stakeholders.
Continuous Delivery
Continuous Deployment + :
Each commit results in a new PRODUCT version, available for end users.
Benefits
CI and your lifecycle of choice
Risk Reduction
Risk Reduction
Risk Reduction
Risk Reduction
Risk Reduction
Risk Reduction
And save time
What is NOT Continuous Integration
Anti-patterns
Builds that last 10hs
Builds that are always red
Build but not test
Build what doesn't change ("Clean mainline syndrome")
ENOUGHHH!!!
Continuous Integration: The inception
XP (eXtreme Programming, not Windows)
Fighting against “Integration hell”

Eventhough branches are easy now
It's the winning of "Convention over configuration" for CM.
What's an automated Build system?
Simply put: a glorified cron job.
In detail:
Repository Change Detection
Build Script Execution
Reporting
Versioned what?
A file system capable of:
Remembering changes
Recoding who did what
Managing branches
Rollback changes
etc.

Examples:
CVS: bad and old.
SVN: not so bad, but old
TFS, Perforce, ClearCase: old
Mercurial, Git: awesome.
Which tests?
Unit tests: yes.
Many tests: yes.
Fast tests: yes.
UI tests: yes.
Integration tests: yes.
Manual (intelligent) tests: no.
How frequent is frequent?
Frequent enough.
"You shall commit if, and only if, you want to share your changes with 'someone' else and your changes are ready and meaningful"
Diego - 3rd commandment of SCM.
You'd better share with me as soon as possible so I can tell you how crappy your code is.
Let's get creative and add some fun
--Marvin, the CI robot
Product Integration
Elements of a good Product Integration approach:
Have a integration environment
Have a integration sequence defined
Have a build BOM (bill of materials)
Build the god damn thing
Check what you have built
Package everything and publish
What does "Integration" means?
Integration of your changes to the product
Product Integration in the old days:
Word document procedures & Processes:
Integration sequence
Bill of materials
Build checklist
Packaging process
Manual verification of integrations
Manual packaging and release of the integrated product
Product Integration - Evolved
Just install a good build management tool and fill up what it asks for.
Full transcript