L ESZEK K RUPIŃSKI PHP ERS W ARSZAWA CONTINUOUS INTEGRATION AND PHP
LESZEK KRUPIŃSKI PHPERS WARSZAWACONTINUOUS IN
TEGRATION AND PHP
HELLO.
LESZEK KRUPIŃSKIARCHITECT CONSULTANT DEVELOPER
@LEAFNODELEAFNODE.PL
MANY PEOPLE DEVELOP THE SAME CODEBASE
PERFECT SITUATION
Dev1 Dev2
MAI
N BR
ANCH
REALITY
Dev1 Dev2
MAI
N BR
ANCH
6 m
onth
s
RELEASE!
Dev1 Dev2
MAI
N BR
ANCH
CONTINUOUS INTEGRATION!
TARGET:
INTEGRATION HELL
METHOD:
INTEGRATION EVEN FEW TIMES A DAY
RULES
YES, IT’S FROM WIKIPEDIA
1
USE CODE REPOSITORY
2
AUTOMATE YOUR BUILD
3
LET THE BUILD TEST ITSELF
4
EVERY DEVELOPER COMMITS TO THE MAIN BRANCH AT LEAST ONCE A DAY
5
EVERY COMMIT SHOULD BE BUILT AND TESTED
6
BUILD SHOULD BE FAST
7
TEST IN PRODUCTION-LIKE ENVIRONMENT
(AS CLOSE AS YOU CAN)
8
GIVE DEVELOPERS ACCESS TO THE BUILD ARTIFACTS
9
EVERY DEVELOPER HAS ACCESS TO THE LAST BUILD RESULTS
10
AUTOMATE YOUR DEPLOYMENT
+/-
MANUALLY? UNFEASIBLE.
HUDSON
JENKINSTRAVIS CI
CRUISECONTROL
BAMBOOTEAMCITY
MEET JENKINS
(SOMETIMES KNOWN AS HUDSON)
INSTALLATION
• Stand-alone JAR
• Tomcat
• apt-get install jenkins
• apache/nginx proxy
TRIGGERS
BUT… PHP DOES NOT COMPILE!
(SORT OF)
CODING STANDARDSTESTS
COMPLEXITY
DOCUMENTATION
METRICS
USING PLUGINS
USING EXTERNAL TOOLS CONNECTORS
DYNAMIC DUO: SEBASTIAN BERGMANN
STEFAN PRIEBSCH
PHPUNIT(+COVERAGE)
SELENIUM
PHP DEPEND
CODE COMPLEXITY AND ERRORS
PHP MESS DETECTOR
PHP COPY/PASTE DETECTOR
CODESNIFFER
PHPDOX
API BROWSER
CODE BROWSER
THAT’S NOT ALL!
RUNNING SCRIPTS
DEPLOYMENT
SLAVE? GIVE ME YOUR KEY.
ACCESS CONTROL
LET’S PLAY!
http://www.pinterest.com/pin/430164201879055746/
https://wiki.jenkins-ci.org/display/JENKINS/Lava+Lamp+Notifier
http://www.pinterest.com/pin/430164201879062573/
http://blog.agilegamedevelopment.com/2011/09/homebrew-build-status-traffic-light.html
http://www.pinterest.com/pin/430164201879093032/
http://www.therealjoshanderson.com/2010/04/ledbloa-ftw-my-teams-new-build-status.html
http://code.google.com/p/siren-of-shame/
http://www.panic.com/blog/the-panic-status-board/
WHAT ELSE
http://en.wikipedia.org/wiki/File:Continuous_Delivery_process_diagram.png CC-BY-SA (c) Jez Humble