SlideShare a Scribd company logo
Continuous delivery
with open source tools
presented by Sebastian Helzle
Who am I?
•

Web developer since Geocities went
popular (~1997)

•

Living in Karlsruhe, Germany since 2004

•

Freelancer since 2007 and first TYPO3
project

•

Javascript enthusiast since 2008

•

DevOps architect since 2012

•

TYPO3 Neos core developer since 2013

•

First time in Asia two weeks ago

•

Cook, hiker, reader, traveler, gamer for a
long time
Overview
•

Motivation for continuous delivery

•

Steps in the delivery pipeline and
•

What each step means

•

The tools I use in each step

•

Tools for keeping the delivery environment running

•

Summary
Motivation
•

Deliver features,
changes, fixes fast and
reproducible

•

Everyone should be able
to do it

•

Maintainable architecture

•

Create value for your
customer
The delivery pipeline
Agile teams
Code repository
Feedback &
Monitoring

Automated builds
Automatic tests
Deployment
Approval

Production

Reporting
Agile teams
Code repository
•

Centralized source code management

•

For reviewing and checking what’s going on in your codebase

•

My tool: Git & Gitlab!
•

Your private Github

•

Big community

•

Easy to setup and maintain

•

Supports teams
Continuous integration
Server
•

Manages the whole CI process

•

My tool: Jenkins
•

Centralized application for running 

all tasks in the process 

(after commit)

•

Very customizable

•

Can run in a distributed environment

•

Has lots of plugins available

including Chuck Norris plugin
Automated builds
•

Run after each commit

•

Report to the team if there are 

problems

•

Give every build a unique ID which is traceable
throughout the pipeline to production
Continuous delivery with open source tools
Automated Tests
•

Assure the quality of your codebase

•

Will be triggered for every build

•

Provides reporting on code quality and other metrics

•

Some tests can also be run as monitoring for the production system

•

Promote builds which pass the tests

•

Inform the team when a tests fails and show the overall quality 

over a timespan

•

My tools:
•

Selenium(2)!

•

PHPUnit, JUnit, PyUnit, QUnit, etc…
Continuous delivery with open source tools
Deployment
•

Requires no manual steps (if possible)

•

Only deploy promoted builds

•

Promote builds on success

•

Configurations should be
•

in version control

•

easy to setup

•

Should be reproducible by everyone in your company

•

Requires good reporting, because errors will happen!
My primary deployment tool:

TYPO3 Surf
•

Distributed as TYPO3 Flow package

•

Can be part of the project itself

•

PHP-based configuration (not necessarily a good thing)

•

Code is readable and can be extended easily

•

Rollbacks when any error happens while deploying

•

Keeps revisions on the target system

•

Deployment via rsync, packaging, Git

•

Run customized tasks at every deployment step

•

Alternatives:
•

Fabric - Python based tool for deployment and remote administration tasks
Approval
•

Smoke tests

•

My tools
•

Selenium(2)!

•

Curl & grep!

•

JMeter (Performance)
Tools for keeping the
delivery environment
running
Maintaining the pipeline
•

Use tools which can automate the setup of each step in the pipeline
•
•

Install the applications

•

Configure the system environment

•
•

Provision the (virtual) machines

Create basic configurations for projects

My tool: Chef!
•

Write cookbooks and recipes in ruby for 

setting up reproducible environments

•

Large community & good support

•

Lots of free cookbooks you can use
Simulate the the pipeline
•

Try out new tools & updates

•

Check if the tools work together

•

Simulate deliveries

•

Break things and try again

•

My tool: Vagrant!
•

Check out the talk by Michael Knoll (Saturday):

„Reproducible and portable work environments with
Vagrant & Chef“
Summary
•

We want continuous delivery because
•

We know what we are delivering

•

We can deliver it fast

•

We can tackle the steps which create headaches

•

It reduces stress -> we have a better life
Problems you will face
•

The tools I presented aren’t trivial
•

•

First steps will be hard -> don’t give up!

Motivate your people to play around with the systems
•
•

•

Best learning effect from my experience
Spreads the knowledge in your company

Making your customer invest in the improvements of
your pipeline
Links
•

gitlab.org - Gitlab

•

docs.seleniumhq.org - Selenium

•

jenkins-ci.org - Jenkins

•

http://www.getchef.com/chef/ - Chef

•

http://docs.fabfile.org/ - Fabric

•

https://qunitjs.com/ - QUnit

•

http://phpunit.de/ - PHPUnit

•

vagrantup.com - Vagrant
Contacting me
•

Twitter: @sebobo

•

By mail: sebastian@helzle.net

•

Skype: sebobo

•

Github: github.com/sebobo
Thank you!
!

Any questions left?

More Related Content

Continuous delivery with open source tools

  • 1. Continuous delivery with open source tools presented by Sebastian Helzle
  • 2. Who am I? • Web developer since Geocities went popular (~1997) • Living in Karlsruhe, Germany since 2004 • Freelancer since 2007 and first TYPO3 project • Javascript enthusiast since 2008 • DevOps architect since 2012 • TYPO3 Neos core developer since 2013 • First time in Asia two weeks ago • Cook, hiker, reader, traveler, gamer for a long time
  • 3. Overview • Motivation for continuous delivery • Steps in the delivery pipeline and • What each step means • The tools I use in each step • Tools for keeping the delivery environment running • Summary
  • 4. Motivation • Deliver features, changes, fixes fast and reproducible • Everyone should be able to do it • Maintainable architecture • Create value for your customer
  • 6. Agile teams Code repository Feedback & Monitoring Automated builds Automatic tests Deployment Approval Production Reporting
  • 8. Code repository • Centralized source code management • For reviewing and checking what’s going on in your codebase • My tool: Git & Gitlab! • Your private Github • Big community • Easy to setup and maintain • Supports teams
  • 9. Continuous integration Server • Manages the whole CI process • My tool: Jenkins • Centralized application for running 
 all tasks in the process 
 (after commit) • Very customizable • Can run in a distributed environment • Has lots of plugins available
 including Chuck Norris plugin
  • 10. Automated builds • Run after each commit • Report to the team if there are 
 problems • Give every build a unique ID which is traceable throughout the pipeline to production
  • 12. Automated Tests • Assure the quality of your codebase • Will be triggered for every build • Provides reporting on code quality and other metrics • Some tests can also be run as monitoring for the production system • Promote builds which pass the tests • Inform the team when a tests fails and show the overall quality 
 over a timespan • My tools: • Selenium(2)! • PHPUnit, JUnit, PyUnit, QUnit, etc…
  • 14. Deployment • Requires no manual steps (if possible) • Only deploy promoted builds • Promote builds on success • Configurations should be • in version control • easy to setup • Should be reproducible by everyone in your company • Requires good reporting, because errors will happen!
  • 15. My primary deployment tool:
 TYPO3 Surf • Distributed as TYPO3 Flow package • Can be part of the project itself • PHP-based configuration (not necessarily a good thing) • Code is readable and can be extended easily • Rollbacks when any error happens while deploying • Keeps revisions on the target system • Deployment via rsync, packaging, Git • Run customized tasks at every deployment step • Alternatives: • Fabric - Python based tool for deployment and remote administration tasks
  • 17. Tools for keeping the delivery environment running
  • 18. Maintaining the pipeline • Use tools which can automate the setup of each step in the pipeline • • Install the applications • Configure the system environment • • Provision the (virtual) machines Create basic configurations for projects My tool: Chef! • Write cookbooks and recipes in ruby for 
 setting up reproducible environments • Large community & good support • Lots of free cookbooks you can use
  • 19. Simulate the the pipeline • Try out new tools & updates • Check if the tools work together • Simulate deliveries • Break things and try again • My tool: Vagrant! • Check out the talk by Michael Knoll (Saturday):
 „Reproducible and portable work environments with Vagrant & Chef“
  • 20. Summary • We want continuous delivery because • We know what we are delivering • We can deliver it fast • We can tackle the steps which create headaches • It reduces stress -> we have a better life
  • 21. Problems you will face • The tools I presented aren’t trivial • • First steps will be hard -> don’t give up! Motivate your people to play around with the systems • • • Best learning effect from my experience Spreads the knowledge in your company Making your customer invest in the improvements of your pipeline
  • 22. Links • gitlab.org - Gitlab • docs.seleniumhq.org - Selenium • jenkins-ci.org - Jenkins • http://www.getchef.com/chef/ - Chef • http://docs.fabfile.org/ - Fabric • https://qunitjs.com/ - QUnit • http://phpunit.de/ - PHPUnit • vagrantup.com - Vagrant
  • 23. Contacting me • Twitter: @sebobo • By mail: sebastian@helzle.net • Skype: sebobo • Github: github.com/sebobo