Deployment-strategieënVeiliger ontwikkelen en opleveren
Door Arjan Snaterse WP-Meetup Enschede, 26-03-2015
Arjan Snaterse, WP Meetup 26-02-2015
Ik wil jullie overtuigen
• Dat je code in versiebeheer moet
• Dat werken in verschillende branches verrekte handig is
• Dat verschillende omgevingen (test, acceptatie, etc) noodzakelijk zijn
• Dat capistrano cool is
Arjan Snaterse, WP Meetup 26-02-2015
Capability Maturity Model
CMM1 CMM2 CMM3 CMM4 CMM5
• CMM1 (adhoc) Working directly on FTP
• CMM2 (repeatable)Local environment
• CMM3 (defined) Version Control System
• CMM4 (managed)Remote deployment
• CMM5 (optimised) Automated deployment
Arjan Snaterse, WP Meetup 26-02-2015
Waarom versiebeheer?
• Historie van veranderingen
• Fouten herstellen
• Teamwork
• Werken aan verschillende features
Arjan Snaterse, WP Meetup 26-02-2015
Commits, Branches en Mergen
• Een commit is set met wijzigingen in de code
• Een branch bestaat uit een set van commits
• Branches merge je naar master
Arjan Snaterse, WP Meetup 26-02-2015
Handige opzet
• Master branch
• Release branch
• Hotfixes
• Voor ieder issue een aparte branch, gemerged naar feature branch
Arjan Snaterse, WP Meetup 26-02-2015
Lees meer...
http://git-scm.com/book/en/v2
Arjan Snaterse, WP Meetup 26-02-2015
Deployment oplossingen
• Web based oplossingen
• Github webhooks
• Capistrano
• .....
Arjan Snaterse, WP Meetup 26-02-2015
Web based oplossingen
• deployhq.com
• codeship.com
• en vele andere...
Arjan Snaterse, WP Meetup 26-02-2015
Github WebhooksDe basis
Een iets geavanceerdere setup: https://github.com/markomarkovic/simple-php-git-deploy/
Arjan Snaterse, WP Meetup 26-02-2015
Meet capistrano
• Deploy vanaf lokaal naar remote met één commando
• Deploy naar verschillende omgevingen
• Deploy specifieke branches
Arjan Snaterse, WP Meetup 26-02-2015
Bundler.io
• Ruby is erg dependency gevoelig.
• Tip: gebruik Bundler
• bundle install
• bundle exec <je_commando>
Arjan Snaterse, WP Meetup 26-02-2015
• bundle exec cap production deploy
• bundle exec cap staging deploy
• bundle exec cap test branch="<branchname>" deploy
Capistrano voorbeelden
Arjan Snaterse, WP Meetup 26-02-2015
Ja maar, JA maar...
• Te hoog gegrepen?
• Start in ieder geval met Github en zoek een bestaande deploy dienst
Arjan Snaterse, WP Meetup 26-02-2015
Voor de liefhebbers
• Deployment op basis van uitkomst unit tests
• Losse omgevingen per branch/issue
• Database deployment
Bedankt!
Arjan Snaterse [email protected] @arjansnaterse 06 - 28 48 86 37
www.uprise.nl www.radishconcepts.com