One click deployment with Jenkins - PHP Munich
-
Upload
mayflower-gmbh -
Category
Technology
-
view
6.555 -
download
0
description
Transcript of One click deployment with Jenkins - PHP Munich
© 2011 Mayflower GmbH
Thorsten Rinne I 22. August 2011, München
One Click Deployment with Jenkins
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Team LeadScrum MasterHead of Open Source Labs
@ThorstenRinne2
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Who are you?
3
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Developers?
4
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Administrators?
5
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
DevOps?
6
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continuous Integration?
7
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How much time do you need for a release?
8
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
More than a year?
9
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
6 - 12 months?
10
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
1 - 6 months?
11
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
2 - 4 weeks?
12
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
1 - 14 days?
13
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
1 - 24 hours?
14
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Less than 15 minutes?
15
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
15 Minutes!
16
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Why One Click Deployment?
17
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Everything is getting faster.
18
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Faster feedback from your customer / user
19
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Faster ROI (return on invest)
20
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Faster responseif the market changes
21
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Basic requirements
22
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Agile software development
23
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Scrum or Kanban
24
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Test Driven Development
25
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continuous Integration
26
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continuous Inspection
27
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Refactoring
28
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
ScrumKanban
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
ScrumKanban
ContinuousIntegration
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
ScrumKanban
ContinuousIntegration
ContinuousInspection
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continuous Deployment
29
ScrumKanban
ContinuousIntegration
ContinuousInspection
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Things you don‘t want.
30
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Having your SVN repo in your webserver‘s docroot.
31
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Using SSH and vi and your root account on the live
server. Never.
32
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Who‘s still doing this? :-)
33
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 34
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
What do we need?
35
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
First: a central build server
36
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 37
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continous Testing with PHPUnit
38
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Advantages
39
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Test results at one central page
40
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Software metrics at one central page
41
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Errors can be identified fast and then fixed
42
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Awareness
43
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 44
Awareness!
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continuous Integration in PHP projects
45
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
PHPUnitphpDocumentator
PHPDox
46
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continuous Inspection in PHP projects
47
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
PHPCSPHP Depend
PHPMDphpcpd
jslint
48
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
jslint?yes!
49
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Infrastructure
50
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 51
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Developer VMUbuntu 11.04
52
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Testing VM + Jenkins VM:Ubuntu 11.04
53
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Staging VMs:Frontend: Ubuntu 11.04
Backend: Ubuntu 10.04 LTS
54
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
amazon AWS live:Frontend: Ubuntu 11.04
Backend: Ubuntu 10.04 LTS
55
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Front NodesVarnishnginx
PHP 5.3 with APCZend Framework 1.11
dojo toolkitDoctrine 2.1
56
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 57
Backend NodesMySQL Master/Slave
Apache SolrPHP 5.3 with APC
RabbitMQejabberd
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Development workflow
58
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
1. git workflow
59
$ git add Foo.php$ git commit -m ″Bar″$ ant jslint$ ant phpunit ...$ git push
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
2. Post commit hook
60
Build triggered on Jenkins
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Jenkins build checks
61
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
PHPUnit Build:Unittests
Controller Tests (Zend_Test)PHP Code Coverage
62
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Debian Package Build
63
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Deploy to stagingDeploy staging to live
64
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
What is a build process?
65
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
ant syncant clean
ant db-updateparallelTasks:
ant phpunitant phpcbant deb
66
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
parallelTasks:php_depend
phpmdphpunitphpcpdphpcsjslint
67
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 68
Build Debian Packageant autoloaderant phpunitant clean
ant compilejsant compilecss
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Deploy Stagingant clean
ant deb-signant db-staging-upscp to all hosts
69
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 70
Deploy Staging to livescp to all hosts
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Disadvantages and problems
71
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Build time15 min on harddisk
massive disk i/o4 min on ramdisk :-)
72
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Complexity beginning such a infrastructure
73
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Jenkins:Single point of failure!
74
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Cool stuff which is now possible
75
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 76
Deploy by customer. :-)
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 77
Jenkins Chuck Norris Plugin
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
git bisect start $BAD $GOOD
78
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Minimum time from bugreport to deploy:
30 minutes
79
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
$ git branch hotfix-2011-08-22$ git checkout hotfix-2011-08-22$ git reset --hard "last stable sha-1"$ git cherry-pick "hotfix sha-1"$ echo build.number=23 > build.number$ ant deb$ scp build/deb/*.deb xyz.amazonaws.com:/opt/repository/$ git checkout master$ git push origin hotfix-2011-08-10
80
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Questions?
81
Thank you very much for your attention!
© 2011 Mayflower GmbH
Contact Thorsten [email protected]+49 89 242054-31
Mayflower GmbHMannhardtstr. 680538 MünchenGermany