One click deployment with Jenkins - PHP Munich

Post on 28-Nov-2014

6.555 views 0 download

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 Rinnethorsten.rinne@mayflower.de+49 89 242054-31

Mayflower GmbHMannhardtstr. 680538 MünchenGermany