Continuous delivery with open source tools
- 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
- 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
- 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