I n t e g r a t e Y o u r P H P P r o j e c t - - PowerPoint PPT Presentation

i n t e g r a t e y o u r p h p p r o j e c t w i t h j e
SMART_READER_LITE
LIVE PREVIEW

I n t e g r a t e Y o u r P H P P r o j e c t - - PowerPoint PPT Presentation

I n t e g r a t e Y o u r P H P P r o j e c t w i t h J e n k i n s S e b a s t i a n B e r g m a n n t h O S C O N J u l y 2 7 2 0 1 1 s h a r i n g e x p e r i e


slide-1
SLIDE 1

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

I n t e g r a t e Y

  • u

r P H P P r

  • j

e c t w i t h J e n k i n s

S e b a s t i a n B e r g m a n n

O S C O N – J u l y 2 7

t h

2 1 1

slide-2
SLIDE 2

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

S e b a s t i a n

slide-3
SLIDE 3

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

C r u c i a l P r a c t i c e s

  • f

A g i l e P r

  • g

r a mme r s

 C

  • n

t i n u

  • u

s I n t e g r a t i

  • n

 T

e s t

  • D

r i v e n D e v e l

  • p

m e n t

 C

  • n

s t a n t D e s i g n I m p r

  • v

e m e n t

 C

  • d

i n g S t a n d a r d

 C

  • l

l e c t i v e C

  • d

e O w n e r s h i p

 S

i m p l e D e s i g n

 S

y s t e m M e t a p h

  • r

 P

a i r P r

  • g

r a m m i n g

T h i s s l i d e c

  • n

t a i n s m a t e r i a l b y J e f f L a n g r a n d T i m O t t i n g e r

slide-4
SLIDE 4

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

Wh a t t h i s me a n s i n p r a c t i c e . . .

 O

r i g i n a l a u t h

  • r

s h i p i s i m m a t e r i a l

 A

n y

  • n

e c a n m

  • d

i f y a n y c

  • d

e a t a n y t i m e

 T

h e t e a m a d h e r e s t

  • a

c

  • d

i n g s t a n d a r d

 A

b u n d a n t a u t

  • m

a t e d t e s t s c r e a t e c

  • n

f i d e n c e

 V

e r s i

  • n

c

  • n

t r

  • l

p r

  • v

i d e s i n s u r a n c e

T h i s s l i d e c

  • n

t a i n s m a t e r i a l b y J e f f L a n g r a n d T i m O t t i n g e r

slide-5
SLIDE 5

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

C

  • n

t i n u

  • u

s I n t e g r a t i

  • n

F

  • r

e a c h c h a n g e s e t

– r u n t h e t e s t s – a n a l y s e t h e s

  • u

r c e c

  • d

e – g e n e r a t e d

  • c

u m e n t a t i

  • n

– b u i l d a p a c k a g e – . . .

slide-6
SLIDE 6

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

slide-7
SLIDE 7

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

T h e V a l u e

  • f

C

  • n

t i n u

  • u

s I n t e g r a t i

  • n

 R

e d u c e r i s k s

 R

e d u c e r e p e t i t i v e p r

  • c

e s s e s

 P

r e v e n t l

  • w

i n t e r n a l s

  • f

t w a r e q u a l i t y

 G

e n e r a t e d e p l

  • y

a b l e s

  • f

t w a r e

 E

n a b l e b e t t e r p r

  • j

e c t v i s i b i l i t y

 E

s t a b l i s h g r e a t e r p r

  • j

e c t c

  • n

f i d e n c e

T h i s s l i d e c

  • n

t a i n s m a t e r i a l b y P a u l M . D u v a l l

slide-8
SLIDE 8

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

P r e r e q u i s i t e s f

  • r

C

  • n

t i n u

  • u

s I n t e g r a t i

  • n

 B

u i l d A u t

  • m

a t i

  • n

 S

  • f

t w a r e C

  • n

f i g u r a t i

  • n

M a n a g e m e n t

slide-9
SLIDE 9

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

D i r e c t

  • r

y S t r u c t u r e

  • f
  • u

r E x a mp l e P r

  • j

e c t

. |

  • b

u i l d | |

  • p

h p c s . x m l | |

  • p

h p m d . x m l | |

  • s

r c _ a u t

  • l
  • a

d . p h p . i n | `

  • t

e s t s _ a u t

  • l
  • a

d . p h p . i n |

  • b

u i l d . x m l |

  • p

h p u n i t . x m l . d i s t |

  • R

E A D M E . m a r k d

  • w

n |

  • s

r c | |

  • a

u t

  • l
  • a

d . p h p | `

  • .

. . `

  • t

e s t s |

  • a

u t

  • l
  • a

d . p h p `

  • .

. .

slide-10
SLIDE 10

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

A p a c h e A n t b u i l d s c r i p t t h a t i n v

  • k

e s P H P A B

<?xml version="1.0" encoding="UTF-8"?> <project name="BankAccount" default="build"> <target name="build" depends="phpab" /> <target name="phpab" description="Generate autoloader scripts"> <exec executable="phpab"> <arg value="--output" /> <arg path="${basedir}/src/autoload.php" /> <arg value="--template" /> <arg path="${basedir}/build/src_autoload.php.in" /> <arg path="${basedir}/src" /> </exec> <exec executable="phpab"> <arg value="--output" /> <arg path="${basedir}/tests/autoload.php" /> <arg value="--template" /> <arg path="${basedir}/build/tests_autoload.php.in" /> <arg path="${basedir}/tests" /> </exec> </target> </project>

slide-11
SLIDE 11

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

A p a c h e A n t b u i l d s c r i p t t h a t i n v

  • k

e s P H P A B

> a n t B u i l d f i l e : / h

  • m

e / s b / b a n k a c c

  • u

n t / b u i l d . x m l p h p a b : [ e x e c ] A u t

  • l
  • a

d f i l e ' s r c / a u t

  • l
  • a

d . p h p ' g e n e r a t e d . [ e x e c ] [ e x e c ] A u t

  • l
  • a

d f i l e ' t e s t s / a u t

  • l
  • a

d . p h p ' g e n e r a t e d . [ e x e c ] b u i l d : B U I L D S U C C E S S F U L T

  • t

a l t i m e : s e c

  • n

d s

slide-12
SLIDE 12

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

A p a c h e A n t b u i l d s c r i p t t h a t i n v

  • k

e s P H P U n i t

<?xml version="1.0" encoding="UTF-8"?> <project name="BankAccount" default="build"> <target name="build" depends="prepare,phpunit" /> <target name="clean" description="Cleanup build artifacts"> <delete dir="${basedir}/build/coverage" /> <delete dir="${basedir}/build/logs" /> </target> <target name="prepare" depends="clean,phpab" description="Prepare for build"> <mkdir dir="${basedir}/build/coverage" /> <mkdir dir="${basedir}/build/logs" /> </target> <target name="phpab" description="Generate autoloader scripts"> <!-- ... --> </target> <target name="phpunit" description="Run unit tests with PHPUnit"> <exec executable="phpunit" failonerror="true" /> </target> </project>

slide-13
SLIDE 13

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

P H P U n i t C

  • n

f i g u r a t i

  • n

<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="tests/autoload.php" backupGlobals="false" backupStaticAttributes="false" strict="true" verbose="true"> <testsuites> <testsuite name="BankAccount"> <directory suffix="Test.php">tests/unit</directory> </testsuite> </testsuites> <logging> <log type="coverage-clover" target="build/logs/clover.xml" /> <log type="coverage-html" target="build/coverage" title="BankAccount" /> <log type="junit" target="build/logs/junit.xml" /> </logging> <filter> <whitelist addUncoveredFilesFromWhitelist="true"> <directory suffix=".php">src</directory> <exclude> <file>src/autoload.php</file> </exclude> </whitelist> </filter> </phpunit>

slide-14
SLIDE 14

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

A p a c h e A n t b u i l d s c r i p t t h a t i n v

  • k

e s P H P U n i t

> a n t B u i l d f i l e : / h

  • m

e / s b / b a n k a c c

  • u

n t / b u i l d . x m l c l e a n : [ d e l e t e ] D e l e t i n g d i r e c t

  • r

y / h

  • m

e / s b / b a n k a c c

  • u

n t / b u i l d / c

  • v

e r a g e [ d e l e t e ] D e l e t i n g d i r e c t

  • r

y / h

  • m

e / s b / b a n k a c c

  • u

n t / b u i l d / l

  • g

s p h p a b : [ e x e c ] A u t

  • l
  • a

d f i l e ' / h

  • m

e / s b / b a n k a c c

  • u

n t / s r c / a u t

  • l
  • a

d . p h p ' g e n e r a t e d . [ e x e c ] A u t

  • l
  • a

d f i l e ' / h

  • m

e / s b / b a n k a c c

  • u

n t / t e s t s / a u t

  • l
  • a

d . p h p ' g e n e r a t e d . p r e p a r e : [ m k d i r ] C r e a t e d d i r : / h

  • m

e / s b / b a n k a c c

  • u

n t / b u i l d / c

  • v

e r a g e [ m k d i r ] C r e a t e d d i r : / h

  • m

e / s b / b a n k a c c

  • u

n t / b u i l d / l

  • g

s p h p u n i t : [ e x e c ] P H P U n i t 3 . 5 . 1 4 b y S e b a s t i a n B e r g m a n n . [ e x e c ] [ e x e c ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [ e x e c ] [ e x e c ] T i m e : s e c

  • n

d s , M e m

  • r

y : 9 . 5 M b [ e x e c ] [ e x e c ] O K ( 3 9 t e s t s , 6 9 a s s e r t i

  • n

s ) [ e x e c ] [ e x e c ] W r i t i n g c

  • d

e c

  • v

e r a g e d a t a t

  • X

M L f i l e , t h i s m a y t a k e a m

  • m

e n t . [ e x e c ] G e n e r a t i n g c

  • d

e c

  • v

e r a g e r e p

  • r

t , t h i s m a y t a k e a m

  • m

e n t . b u i l d : B U I L D S U C C E S S F U L T

  • t

a l t i m e : 2 s e c

  • n

d s

slide-15
SLIDE 15

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

C

  • n

t i n u

  • u

s I n t e g r a t i

  • n
  • f

P H P P r

  • j

e c t s

 J

e n k i n s

h t t p : / / j e n k i n s

  • c

i .

  • r

g /

 T

e m p l a t e f

  • r

J e n k i n s J

  • b

s f

  • r

P H P P r

  • j

e c t s

– h t t p : / / j e n k i n s

  • p

h p .

  • r

g /

 P

H P P r

  • j

e c t W i z a r d ( P P W )

– O n G i t H u b , l i n k e d f r

  • m

h t t p : / / j e n k i n s

  • p

h p .

  • r

g /

slide-16
SLIDE 16

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

I n s t a l l i n g J e n k i n s

> mkdir /usr/local/jenkins > cd /usr/local/jenkins > wget http://mirrors.jenkins-ci.org/war-stable/latest/jenkins.war > export JENKINS_HOME=/usr/local/jenkins > java -jar jenkins.war

slide-17
SLIDE 17

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

I n s t a l l i n g P l u g i n f

  • r

J e n k i n s ( u s i n g J e n k i n s C L I )

> wget http://localhost:8080/jnlpJars/jenkins-cli.jar > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin checkstyle > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin cloverphp > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin dry > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin htmlpublisher > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin jdepend > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin plot > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin pmd > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin violations > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin xunit > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin git > java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin greenballs > java -jar jenkins-cli.jar -s http://localhost:8080 safe-restart

slide-18
SLIDE 18

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

C

  • n

t i n u

  • u

s I n t e g r a t i

  • n
  • f

P H P P r

  • j

e c t s

D e m

  • T

i m e !

slide-19
SLIDE 19

s h a r i n g e x p e r i e n c e s h a r i n g e x p e r i e n c e

T h e E n d

 W

e b : h t t p : / / t h e P H P . c c / h t t p : / / s e b a s t i a n

  • b

e r g m a n n . d e /

 M

a i l : s e b a s t i a n @ t h e P H P . c c

 T

w i t t e r : @ s _ b e r g m a n n

 S

l i d e s : h t t p : / / t a l k s . t h e P H P . c c /

 B

  • k

: h t t p : / /

  • r

e i l l y . c

  • m

/ c a t a l

  • g

/ 6 3 6 9 2 2 1 3 5 3 /