continuous integration

36
Tobias Nyholm Continuous Integration Tobias Nyholm

Upload: tobias-nyholm

Post on 10-May-2015

388 views

Category:

Technology


1 download

DESCRIPTION

This was my talk from November Camp 2013

TRANSCRIPT

Page 1: Continuous integration

Tobias Nyholm

Continuous Integration

Tobias Nyholm

Page 2: Continuous integration

Tobias Nyholm

About me

• Doing Symfony since 1.2!

• Master thesis at KTH!

• Happy Recruiting We sort your pile of resumés

���2

Page 3: Continuous integration

Tobias Nyholm

Every software project

���3

Page 4: Continuous integration

Tobias Nyholm

What is efficiency?

• Resource efficiency !

• Every developer works full time!

• You develop all day without distractions like Facebook or coffee breaks

���4

Page 5: Continuous integration

Tobias Nyholm

What is efficiency?

• Flow efficiency!

• Developer A completes X in 4 h!

• Developer B completes the same task X in 3 h!

• Developer B is more efficient than A

���5

Page 6: Continuous integration

Tobias Nyholm

What is quality?

���6

• Reliability !

• Performance Efficiency!

• Security!

• Maintainability!

• Size of the project

Ref: CISQ's Quality model

Page 7: Continuous integration

Tobias Nyholm

Extreme Programming - Definition

• Pair programming!

• Plan sprints!

• Test Driven Development!

• Communication with the customer!

• Continuous Integration!

• Refactoring!

• Small releases!

• Coding standards!

• Collective code ownership!

• Simple design!

• System metaphor!

• Sustainable pace!

• No overtime!

• Leave optimization until last!

• 100% test coverage!

• Write test for all bugs

���7

Ref: http://en.wikipedia.org/wiki/Extreme_programming

Page 8: Continuous integration

Tobias Nyholm

Extreme Programming

• KISS and DRY!

• Test Driven Developmet!

• Trust your test code!

• Share knowledge between developers!

• Be happy and healthy

���8

Page 9: Continuous integration

Tobias Nyholm

Overview

���9

Page 10: Continuous integration
Page 11: Continuous integration

Tobias Nyholm

Story Cards

���11

Page 12: Continuous integration

Tobias Nyholm

Overview - Development

���12

Page 13: Continuous integration

Tobias Nyholm

Overview - Revision control

���13

Page 14: Continuous integration

Tobias Nyholm

Branching

���14

Page 15: Continuous integration

Tobias Nyholm

Git vs SVN

���15

Page 16: Continuous integration
Page 17: Continuous integration

Tobias Nyholm

Overview - Jenkins

���17

Page 18: Continuous integration

Tobias Nyholm

Jenkins is the heart of CI

���18

Page 19: Continuous integration

Tobias Nyholm

Important stuff

���19

• Quick feedback!

• SVN/GIT - hook!

• Only CM should have permissions to change the rules in Jenkins

Page 20: Continuous integration

Tobias Nyholm

Overview - Build servers

���20

Page 21: Continuous integration

Tobias Nyholm

Build fast

���21

• Build SNAPSHOTS from master!

• Short build queues (< 10 min)!

• Multiple build servers!

• Parallel builds

Page 22: Continuous integration

Tobias Nyholm

Overview - Test

���22

Page 23: Continuous integration

Tobias Nyholm

Overview - Analysis

���23

Page 24: Continuous integration

Tobias Nyholm

Sonar

���24

• A platform for code analysis!

• Make you own quality profile!

• Create alarms when the profile is violated!

• Break the build when an alarm triggered

Page 25: Continuous integration

Tobias Nyholm

Sonar - Rules

���25

• Plugins like PHPMD, PHP Depend, PHP_CodeSniffer etc!

• Complexity!

• Comments!

• Size of the source code!

• Performance

Page 26: Continuous integration

Tobias Nyholm

Sonar - Benefits

���26

• Change history!

• Unified code that is easy to maintain!

• Reduce complexity!

• More documented code

Quality - Definition ✓Reliability ✓Performance Security ✓Maintainability ✓Size of the project

Page 27: Continuous integration

Tobias Nyholm

Upload to artefact repository

���27

Page 28: Continuous integration

Tobias Nyholm

Overview - Deployment

���28

Page 29: Continuous integration

Tobias Nyholm

Puppet is king

���29

Page 30: Continuous integration

Tobias Nyholm

Capistrano, Ant, Octopus

• Check out code!

• Migrate the database!

• Empty cache, warm up cache!

• Run scripts!

• etc

���30

Page 31: Continuous integration

Tobias Nyholm

Distribution

• Distribute file automatically att each build!

• No developer should manually update any server!

• No human errors

���31

Page 32: Continuous integration

Tobias Nyholm

Environments

���32

• Local environment of every developers machine!

• Staging environment where Jenkins moves files automatically!

• QA environment where you move files when needed!

• Production environment!

• Make sure that the customer or project manager provide you with these

Page 33: Continuous integration

Tobias Nyholm

On HappyRecruiting

���33

Page 34: Continuous integration

Tobias Nyholm

Overview - Verification

���34

Page 35: Continuous integration

Tobias Nyholm

Summary

���35

Page 36: Continuous integration

Tobias Nyholm

Thank you

���36

Tobias Nyholm2013-11-22