One click deployment with Jenkins - PHP Munich

  • 6,041 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,041
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
53
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. One Click Deployment with JenkinsThorsten Rinne I 22. August 201 München 1, © 201 Mayflower GmbH 1
  • 2. Team LeadScrum MasterHead of Open Source Labs@ThorstenRinne Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 2
  • 3. Who are you? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 3
  • 4. Developers? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 4
  • 5. Administrators? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 5
  • 6. DevOps? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 6
  • 7. Continuous Integration? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 7
  • 8. How much time do you need for a release? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 8
  • 9. More than a year? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 9
  • 10. 6 - 12 months? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 10
  • 11. 1 - 6 months? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 11
  • 12. 2 - 4 weeks? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 12
  • 13. 1 - 14 days? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 13
  • 14. 1 - 24 hours? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 14
  • 15. Less than 15 minutes? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 15
  • 16. 15 Minutes! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 16
  • 17. Why One ClickDeployment? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 17
  • 18. Everything is getting faster. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 18
  • 19. Faster feedback fromyour customer / user Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 19
  • 20. Faster ROI(return on invest) Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 20
  • 21. Faster responseif the market changes Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 21
  • 22. Basic requirements Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 22
  • 23. Agile software development Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 23
  • 24. Scrum or Kanban Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 24
  • 25. Test Driven Development Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 25
  • 26. Continuous Integration Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 26
  • 27. Continuous Inspection Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 27
  • 28. Refactoring Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 28
  • 29. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
  • 30. ScrumKanban Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
  • 31. Scrum ContinuousKanban Integration Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
  • 32. Scrum Continuous ContinuousKanban Integration Inspection Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
  • 33. Scrum Continuous ContinuousKanban Integration InspectionContinuous Deployment Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
  • 34. Things you don‘t want. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 30
  • 35. Having your SVN repo inyour webserver‘s docroot. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 31
  • 36. Using SSH and vi and your root account on the live server. Never. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 32
  • 37. Who‘s still doing this? :-) Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 33
  • 38. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 34
  • 39. What do we need? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 35
  • 40. First: a central build server Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 36
  • 41. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 37
  • 42. Continous Testing with PHPUnit Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 38
  • 43. Advantages Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 39
  • 44. Test results at one central page Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 40
  • 45. Software metrics at one central page Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 41
  • 46. Errors can be identified fast and then fixed Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 42
  • 47. Awareness Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 43
  • 48. Awareness! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 44
  • 49. Continuous Integration in PHP projects Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 45
  • 50. PHPUnitphpDocumentator PHPDox Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 46
  • 51. Continuous Inspection in PHP projects Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 47
  • 52. PHPCSPHP Depend PHPMD phpcpd jslint Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 48
  • 53. jslint? yes! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 49
  • 54. Infrastructure Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 50
  • 55. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 51
  • 56. Developer VMUbuntu 11.04 Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 52
  • 57. Testing VM + Jenkins VM: Ubuntu 11.04 Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 53
  • 58. Staging VMs: Frontend: Ubuntu 11.04Backend: Ubuntu 10.04 LTS Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 54
  • 59. amazon AWS live: Frontend: Ubuntu 11.04Backend: Ubuntu 10.04 LTS Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 55
  • 60. Front Nodes Varnish nginx PHP 5.3 with APCZend Framework 1.11 dojo toolkit Doctrine 2.1 Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 56
  • 61. Backend NodesMySQL Master/Slave Apache Solr PHP 5.3 with APC RabbitMQ ejabberd Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 57
  • 62. Development workflow Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 58
  • 63. 1. git workflow$ 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 59
  • 64. 2. Post commit hookBuild triggered on Jenkins Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 60
  • 65. Jenkins build checks Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 61
  • 66. PHPUnit Build: UnittestsController Tests (Zend_Test) PHP Code Coverage Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 62
  • 67. Debian Package Build Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 63
  • 68. Deploy to stagingDeploy staging to live Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 64
  • 69. What is a build process? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 65
  • 70. ant sync ant cleanant db-update parallelTasks: ant phpunit ant phpcb ant deb Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 66
  • 71. parallelTasks:php_depend phpmd phpunit phpcpd phpcs jslint Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 67
  • 72. Build Debian Packageant autoloader ant phpunit ant clean ant compilejsant compilecss Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 68
  • 73. Deploy Staging ant clean ant deb-signant db-staging-upscp to all hosts Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 69
  • 74. Deploy Staging to livescp to all hosts Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 70
  • 75. Disadvantages and problems Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 71
  • 76. Build time15 min on harddisk massive disk i/o4 min on ramdisk :-) Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 72
  • 77. Complexity beginning such a infrastructure Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 73
  • 78. Jenkins:Single point of failure! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 74
  • 79. Cool stuffwhich is now possible Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 75
  • 80. Deploy by customer. :-) Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 76
  • 81. Jenkins Chuck Norris Plugin Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 77
  • 82. git bisect start $BAD $GOOD Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 78
  • 83. Minimum time frombugreport to deploy: 30 minutes Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 79
  • 84. $ 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 Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 80
  • 85. Questions? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 81
  • 86. Thank you very much for your attention!Contact Thorsten Rinne thorsten.rinne@mayflower.de +49 89 242054-31 Mayflower GmbH Mannhardtstr. 6 80538 München Germany © 201 Mayflower GmbH 1