Practical PHP Deployment
with Jenkins
By:
Adam Culp
Twitter: @adamculp
2
Practical PHP Deployment with Jenkins
●
About me
– PHP 5.3 Certified
– Consultant at Zend Technologies
– Zend Certification Advisory Board
– Organizer SoFloPHP (South Florida)
– Organized SunshinePHP (Miami)
– Long distance (ultra) runner
– Judo Black Belt Instructor
3
Practical PHP Deployment with Jenkins
●
Fan of iteration
– Pretty much everything requires iteration to do well:
●
Long distance running
●
Judo
●
Development
●
Evading project managers
●
Deploying!
4
Practical PHP Deployment with Jenkins
● Dev VS Ops
– Dev = Ops
– Dev doesn't like Ops
– Can't communicate
– Challenges syncing
5
Practical PHP Deployment with Jenkins
● Continuous Delivery
– Not a single app solution
– Many pieces
– Not covered here
● Provisioning of servers
●
Integration to monitoring
– We will focus on:
6
Practical PHP Deployment with Jenkins
● Continuous Integration
7
Practical PHP Deployment with Jenkins
● Deployment
– FTP works...NOT!
– Many large PHP sites
– Simple != solution
8
Practical PHP Deployment with Jenkins
● 5 to 7 Releases...A Day!
– Not achievable with FTP
– Must be automated
9
Practical PHP Deployment with Jenkins
● Ready To Deploy!
– Not after every commit
– But always “ready”
10
Practical PHP Deployment with Jenkins
● Best Practices
– No holy grail here
– Many dependencies
● Development team
●
Application
●
Size of application
●
How to implement
11
Practical PHP Deployment with Jenkins
● Architecture
– Git
– Jenkins
– Zend Server
12
Practical PHP Deployment with Jenkins
● Zend Server
– Full PHP application stack
– Supported
– Consistent across OS
– Automated deployment
– Cluster management
13
Practical PHP Deployment with Jenkins
● WebAPI – Restful Service
– Built API first
– GUI is just the front-end
14
Practical PHP Deployment with Jenkins
● Source Control
– !Github here (just in case)
– Using Git
16
Practical PHP Deployment with Jenkins
● PHP QA Tools
– http://phpqatools.org
● PHPUnit
●
pdepend
17
Practical PHP Deployment with Jenkins
● Docker
– Linux Containers
– Versioned (“Git for servers”)
– Stores delta
18
Practical PHP Deployment with Jenkins
● When Apps Break
– What's really to blame?
19
Practical PHP Deployment with Jenkins
● Root Cause Analysis
– What is the cause
● How to prevent
●
How to fix
– Needs to happen fast!
20
Practical PHP Deployment with Jenkins
● Rollback
– Within 30 seconds
● Even in a cluster!
21
Practical PHP Deployment with Jenkins
● Demo
– Using Pimcore CMS (500K lines of code)
– Jenkins
● Multiple jobs from:
– Checkout
– Testing
– Packaging
– Deployment to staging
– Rollback
– Deploy to production (cluster)
– Then we'll see the details
24
Practical PHP Deployment with Jenkins
● Resources
– http://zend.com
– http://zend.com/en/solutions/continuous-delivery
– http://github.com/zend-patterns
● Thank you!
– Code: https://github.com/adamculp/
Adam Culp
http://www.geekyboy.com
http://RunGeekRadio.com
Twitter @adamculp
Questions?

Practical PHP Deployment with Jenkins

  • 1.
    Practical PHP Deployment withJenkins By: Adam Culp Twitter: @adamculp
  • 2.
    2 Practical PHP Deploymentwith Jenkins ● About me – PHP 5.3 Certified – Consultant at Zend Technologies – Zend Certification Advisory Board – Organizer SoFloPHP (South Florida) – Organized SunshinePHP (Miami) – Long distance (ultra) runner – Judo Black Belt Instructor
  • 3.
    3 Practical PHP Deploymentwith Jenkins ● Fan of iteration – Pretty much everything requires iteration to do well: ● Long distance running ● Judo ● Development ● Evading project managers ● Deploying!
  • 4.
    4 Practical PHP Deploymentwith Jenkins ● Dev VS Ops – Dev = Ops – Dev doesn't like Ops – Can't communicate – Challenges syncing
  • 5.
    5 Practical PHP Deploymentwith Jenkins ● Continuous Delivery – Not a single app solution – Many pieces – Not covered here ● Provisioning of servers ● Integration to monitoring – We will focus on:
  • 6.
    6 Practical PHP Deploymentwith Jenkins ● Continuous Integration
  • 7.
    7 Practical PHP Deploymentwith Jenkins ● Deployment – FTP works...NOT! – Many large PHP sites – Simple != solution
  • 8.
    8 Practical PHP Deploymentwith Jenkins ● 5 to 7 Releases...A Day! – Not achievable with FTP – Must be automated
  • 9.
    9 Practical PHP Deploymentwith Jenkins ● Ready To Deploy! – Not after every commit – But always “ready”
  • 10.
    10 Practical PHP Deploymentwith Jenkins ● Best Practices – No holy grail here – Many dependencies ● Development team ● Application ● Size of application ● How to implement
  • 11.
    11 Practical PHP Deploymentwith Jenkins ● Architecture – Git – Jenkins – Zend Server
  • 12.
    12 Practical PHP Deploymentwith Jenkins ● Zend Server – Full PHP application stack – Supported – Consistent across OS – Automated deployment – Cluster management
  • 13.
    13 Practical PHP Deploymentwith Jenkins ● WebAPI – Restful Service – Built API first – GUI is just the front-end
  • 14.
    14 Practical PHP Deploymentwith Jenkins ● Source Control – !Github here (just in case) – Using Git
  • 15.
    16 Practical PHP Deploymentwith Jenkins ● PHP QA Tools – http://phpqatools.org ● PHPUnit ● pdepend
  • 16.
    17 Practical PHP Deploymentwith Jenkins ● Docker – Linux Containers – Versioned (“Git for servers”) – Stores delta
  • 17.
    18 Practical PHP Deploymentwith Jenkins ● When Apps Break – What's really to blame?
  • 18.
    19 Practical PHP Deploymentwith Jenkins ● Root Cause Analysis – What is the cause ● How to prevent ● How to fix – Needs to happen fast!
  • 19.
    20 Practical PHP Deploymentwith Jenkins ● Rollback – Within 30 seconds ● Even in a cluster!
  • 20.
    21 Practical PHP Deploymentwith Jenkins ● Demo – Using Pimcore CMS (500K lines of code) – Jenkins ● Multiple jobs from: – Checkout – Testing – Packaging – Deployment to staging – Rollback – Deploy to production (cluster) – Then we'll see the details
  • 21.
    24 Practical PHP Deploymentwith Jenkins ● Resources – http://zend.com – http://zend.com/en/solutions/continuous-delivery – http://github.com/zend-patterns
  • 22.
    ● Thank you! –Code: https://github.com/adamculp/ Adam Culp http://www.geekyboy.com http://RunGeekRadio.com Twitter @adamculp Questions?