continuous integration in php

60
L ESZEK K RUPIŃSKI PHP ERS W ARSZAWA CONTINUOUS INTEGRATION AND PHP

Upload: leafnode

Post on 16-Apr-2017

158 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Continuous Integration in PHP

LESZEK KRUPIŃSKI PHPERS WARSZAWACONTINUOUS IN

TEGRATION AND PHP

Page 2: Continuous Integration in PHP

HELLO.

LESZEK KRUPIŃSKIARCHITECT CONSULTANT DEVELOPER

@LEAFNODELEAFNODE.PL

Page 3: Continuous Integration in PHP

MANY PEOPLE DEVELOP THE SAME CODEBASE

Page 4: Continuous Integration in PHP

PERFECT SITUATION

Page 5: Continuous Integration in PHP

Dev1 Dev2

MAI

N BR

ANCH

Page 6: Continuous Integration in PHP

REALITY

Page 7: Continuous Integration in PHP

Dev1 Dev2

MAI

N BR

ANCH

6 m

onth

s

Page 8: Continuous Integration in PHP

RELEASE!

Page 9: Continuous Integration in PHP
Page 10: Continuous Integration in PHP
Page 11: Continuous Integration in PHP

Dev1 Dev2

MAI

N BR

ANCH

Page 12: Continuous Integration in PHP

CONTINUOUS INTEGRATION!

Page 13: Continuous Integration in PHP

TARGET:

INTEGRATION HELL

Page 14: Continuous Integration in PHP

METHOD:

INTEGRATION EVEN FEW TIMES A DAY

Page 15: Continuous Integration in PHP

RULES

YES, IT’S FROM WIKIPEDIA

Page 16: Continuous Integration in PHP

1

USE CODE REPOSITORY

Page 17: Continuous Integration in PHP

2

AUTOMATE YOUR BUILD

Page 18: Continuous Integration in PHP

3

LET THE BUILD TEST ITSELF

Page 19: Continuous Integration in PHP

4

EVERY DEVELOPER COMMITS TO THE MAIN BRANCH AT LEAST ONCE A DAY

Page 20: Continuous Integration in PHP

5

EVERY COMMIT SHOULD BE BUILT AND TESTED

Page 21: Continuous Integration in PHP

6

BUILD SHOULD BE FAST

Page 22: Continuous Integration in PHP

7

TEST IN PRODUCTION-LIKE ENVIRONMENT

(AS CLOSE AS YOU CAN)

Page 23: Continuous Integration in PHP

8

GIVE DEVELOPERS ACCESS TO THE BUILD ARTIFACTS

Page 24: Continuous Integration in PHP

9

EVERY DEVELOPER HAS ACCESS TO THE LAST BUILD RESULTS

Page 25: Continuous Integration in PHP

10

AUTOMATE YOUR DEPLOYMENT

Page 26: Continuous Integration in PHP

+/-

Page 27: Continuous Integration in PHP

MANUALLY? UNFEASIBLE.

Page 28: Continuous Integration in PHP

HUDSON

JENKINSTRAVIS CI

CRUISECONTROL

BAMBOOTEAMCITY

Page 29: Continuous Integration in PHP

MEET JENKINS

(SOMETIMES KNOWN AS HUDSON)

Page 30: Continuous Integration in PHP
Page 31: Continuous Integration in PHP

INSTALLATION

• Stand-alone JAR

• Tomcat

• apt-get install jenkins

• apache/nginx proxy

Page 32: Continuous Integration in PHP

TRIGGERS

Page 33: Continuous Integration in PHP

BUT… PHP DOES NOT COMPILE!

(SORT OF)

Page 34: Continuous Integration in PHP

CODING STANDARDSTESTS

COMPLEXITY

DOCUMENTATION

METRICS

USING PLUGINS

Page 35: Continuous Integration in PHP

USING EXTERNAL TOOLS CONNECTORS

DYNAMIC DUO: SEBASTIAN BERGMANN

STEFAN PRIEBSCH

Page 36: Continuous Integration in PHP

PHPUNIT(+COVERAGE)

Page 37: Continuous Integration in PHP

SELENIUM

Page 38: Continuous Integration in PHP

PHP DEPEND

CODE COMPLEXITY AND ERRORS

Page 39: Continuous Integration in PHP
Page 40: Continuous Integration in PHP

PHP MESS DETECTOR

Page 41: Continuous Integration in PHP

PHP COPY/PASTE DETECTOR

Page 42: Continuous Integration in PHP

CODESNIFFER

Page 43: Continuous Integration in PHP
Page 44: Continuous Integration in PHP

PHPDOX

API BROWSER

Page 45: Continuous Integration in PHP

CODE BROWSER

Page 46: Continuous Integration in PHP

THAT’S NOT ALL!

Page 47: Continuous Integration in PHP

RUNNING SCRIPTS

Page 48: Continuous Integration in PHP

DEPLOYMENT

Page 49: Continuous Integration in PHP

SLAVE? GIVE ME YOUR KEY.

Page 50: Continuous Integration in PHP

ACCESS CONTROL

Page 51: Continuous Integration in PHP

LET’S PLAY!

Page 52: Continuous Integration in PHP

http://www.pinterest.com/pin/430164201879055746/

https://wiki.jenkins-ci.org/display/JENKINS/Lava+Lamp+Notifier

http://www.pinterest.com/pin/430164201879062573/

Page 53: Continuous Integration in PHP

http://blog.agilegamedevelopment.com/2011/09/homebrew-build-status-traffic-light.html

Page 54: Continuous Integration in PHP

http://www.pinterest.com/pin/430164201879093032/

Page 55: Continuous Integration in PHP

http://www.therealjoshanderson.com/2010/04/ledbloa-ftw-my-teams-new-build-status.html

Page 56: Continuous Integration in PHP

http://code.google.com/p/siren-of-shame/

Page 57: Continuous Integration in PHP

http://www.panic.com/blog/the-panic-status-board/

Page 58: Continuous Integration in PHP

WHAT ELSE

Page 59: Continuous Integration in PHP

http://en.wikipedia.org/wiki/File:Continuous_Delivery_process_diagram.png CC-BY-SA (c) Jez Humble

Page 60: Continuous Integration in PHP

THANK YOU.

JENKINS-PHP.ORG SLIDESHARE.NET/LEAFNODE