View
1.908
Download
3
Category
Preview:
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.
Citation preview
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
Code repository
Automated builds
Automatic tests
Deployment
Production
Agile teams
Reporting
Approval
Feedback & Monitoring
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
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…
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
• 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
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?
Recommended