continuous delivery with open source tools

24
Continuous delivery with open source tools presented by Sebastian Helzle

Upload: sebobo

Post on 06-May-2015

1.906 views

Category:

Technology


3 download

DESCRIPTION

These slides are about my personal experience from creating a continuous delivery process in the last 2 years. The main focus lies in the tools I used and my experience with them.

TRANSCRIPT

Page 1: Continuous delivery with open source tools

Continuous delivery with open source tools

presented by Sebastian Helzle

Page 2: Continuous delivery with open source tools

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

Page 3: Continuous delivery with open source tools

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

Page 4: Continuous delivery with open source tools

Motivation• Deliver features,

changes, fixes fast and reproducible

• Everyone should be able to do it

• Maintainable architecture

• Create value for your customer

Page 5: Continuous delivery with open source tools

The delivery pipeline

Page 6: Continuous delivery with open source tools

Code repository

Automated builds

Automatic tests

Deployment

Production

Agile teams

Reporting

Approval

Feedback & Monitoring

Page 7: Continuous delivery with open source tools

Agile teams

Page 8: Continuous delivery with open source tools

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

Page 9: Continuous delivery with open source tools

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

Page 10: Continuous delivery with open source tools

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

Page 11: Continuous delivery with open source tools
Page 12: 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…

Page 13: Continuous delivery with open source tools
Page 14: 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!

Page 15: Continuous delivery with open source tools

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

Page 16: Continuous delivery with open source tools

Approval• Smoke tests

• My tools

• Selenium(2)!

• Curl & grep!

• JMeter (Performance)

Page 17: Continuous delivery with open source tools

Tools for keeping the delivery environment

running

Page 18: Continuous delivery with open source tools

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

• Provision the (virtual) machines

• Install the applications

• Configure the system environment

• 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

Page 19: Continuous delivery with open source tools

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“

Page 20: Continuous delivery with open source tools

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

Page 21: Continuous delivery with open source tools

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

Page 22: Continuous delivery with open source tools

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

Page 23: Continuous delivery with open source tools

Contacting me

• Twitter: @sebobo

• By mail: [email protected]

• Skype: sebobo

• Github: github.com/sebobo

Page 24: Continuous delivery with open source tools

Thank you! !

Any questions left?