Practical PHP Deployment with Jenkins By:
Adam Culp Twitter: @adamculp
Slide 2
Practical PHP Deployment with Jenkins ●
2
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
Slide 3
Practical PHP Deployment with Jenkins ●
Fan of iteration –
3
Pretty much everything requires iteration to do well: ●
Long distance running
●
Judo
●
Development
●
Evading project managers
●
Deploying!
Slide 4
Practical PHP Deployment with Jenkins ●
4
Dev VS Ops –
Dev = Ops
–
Dev doesn’t like Ops
–
Can’t communicate
–
Challenges syncing
Slide 5
Practical PHP Deployment with Jenkins ●
Continuous Delivery –
Not a single app solution
–
Many pieces
–
Not covered here
–
5
●
Provisioning of servers
●
Integration to monitoring
We will focus on:
Slide 6
Practical PHP Deployment with Jenkins ●
6
Continuous Integration
Slide 7
Practical PHP Deployment with Jenkins ●
7
Deployment –
FTP works…NOT!
–
Many large PHP sites
–
Simple != solution
Slide 8
Practical PHP Deployment with Jenkins ●
8
5 to 7 Releases…A Day! –
Not achievable with FTP
–
Must be automated
Slide 9
Practical PHP Deployment with Jenkins ●
9
Ready To Deploy! –
Not after every commit
–
But always “ready”
Slide 10
Practical PHP Deployment with Jenkins ●
10
Best Practices –
No holy grail here
–
Many dependencies ●
Development team
●
Application
●
Size of application
●
How to implement
Slide 11
Practical PHP Deployment with Jenkins ●
11
Architecture –
Git
–
Jenkins
–
Zend Server
Slide 12
Practical PHP Deployment with Jenkins ●
12
Zend Server –
Full PHP application stack
–
Supported
–
Consistent across OS
–
Automated deployment
–
Cluster management
Slide 13
Practical PHP Deployment with Jenkins ●
13
WebAPI – Restful Service –
Built API first
–
GUI is just the front-end
Slide 14
Practical PHP Deployment with Jenkins ●
14
Source Control –
!Github here (just in case)
–
Using Git
Practical PHP Deployment with Jenkins ●
17
Docker –
Linux Containers
–
Versioned (“Git for servers”)
–
Stores delta
Slide 17
Practical PHP Deployment with Jenkins ●
When Apps Break –
18
What’s really to blame?
Slide 18
Practical PHP Deployment with Jenkins ●
Root Cause Analysis –
–
19
What is the cause ●
How to prevent
●
How to fix
Needs to happen fast!
Slide 19
Practical PHP Deployment with Jenkins ●
Rollback –
Within 30 seconds ●
20
Even in a cluster!
Slide 20
Practical PHP Deployment with Jenkins ●
Demo –
Using Pimcore
–
Jenkins ●
Multiple jobs from:
Checkout – Testing – Packaging – Deployment to staging – Rollback – Deploy to production (cluster) Then we’ll see the details –
–
21