Download - Perl Continous Integration

Transcript
Page 1: Perl Continous Integration

YAPC::NA 10Pittsburgh, PA

Continuous Integration

Tools in PerlMichael PetersPlus Three, LP

Page 2: Perl Continous Integration

What is CI?What is CI?

●Build and test all the time●As soon as you can●As loud as you can●On as many platforms as you need●On as many different configurations as you need

Page 3: Perl Continous Integration

What is CI?What is CI?

●Home grown (bash + email)●CruiseControl●Buildbot●Tinderbox●CABIE●Smolder●Hudson, TeamCity, Continuum, Cerberus, ControlTier, OpenMake Mojo, lots of others

Page 4: Perl Continous Integration

Take a drinkTake a drink

Page 5: Perl Continous Integration

CruiseControlCruiseControl

●http://cruisecontrol.sourceforge.net/●Java based●Very well known, "industry standard"●Lots of plugins for lots of things

● SCM● Notification● Build management (make, Ant, Maven, rake)● Lots more

Page 6: Perl Continous Integration

CruiseControlCruiseControl

●Web UI● View old builds/tests● See what CruiseControl is doing right now

● Is it checking out code?● Is it building?

●Build Loop Daemon● Separate process to do the heavy lifting

Page 7: Perl Continous Integration

CruiseControlCruiseControl

Page 8: Perl Continous Integration

CruiseControlCruiseControl

Limitations and Complaints● Not Perl (Java)● Run loop is on a single machine

● They are working on distributed● Format is not a standard

● Yes it's XML, but...● Whatever JUnit spits out

Page 9: Perl Continous Integration

CruiseControlCruiseControl

Limitations and Complaints● Not Perl (Java)● Run loop is on a single machine

● They are working on distributed● Format is not a standard

● Yes it's XML, but...● Whatever JUnit spits out

● All Java and all XML

Page 10: Perl Continous Integration

Take a drinkTake a drink

Page 11: Perl Continous Integration

BuildbotBuildbot

●http://buildbot.net/trac●Python based●Designed to be distributed

● master/slave architecture● nice for OSS projects and volunteers

●Tracks some metrics over time● warnings● link checks● compile time● etc

Page 12: Perl Continous Integration

BuildbotBuildbot

●Lots of notification channels● Email● IRC bot (real time insults)● GTk app

●Lots of built-in support for CSMs● CVS, svn, perforce, Bonsai, git, Mercurial, Bazaar,

●Web UI●CLI

Page 13: Perl Continous Integration

BuildbotBuildbot

Page 14: Perl Continous Integration

BuildbotBuildbot

Limitations and Complaints● Not Perl (Python)● Sometimes too heavy● Ugggggly● It's complicated● Configuration is all Python● Format is not standard

● Whatever your test spits out and returns● Developer's can't customize notifications for themselves

● No detailed breakdown of test failures

Page 15: Perl Continous Integration

Take a drinkTake a drink

Page 16: Perl Continous Integration

TinderboxTinderbox

●http://www.mozilla.org/projects/tinderbox●Perl based●Mozilla Project

● currently being rewritten● used for Firefox, Thunderbird, etc● Integrates with Bugzilla● Only supports CVS

●Add comments to build runs●Currently being rewritten

● Seems to use Buildbot underneath

Page 17: Perl Continous Integration

TinderboxTinderbox

Page 18: Perl Continous Integration

TinderboxTinderbox

Limitations and Complaints● No packages, no releases (grab from CVS)● Not much support

● from Mozilla● nor the Perl community

● Just does CVS● Developers can't customize their notifications● Kind of ugly

Page 19: Perl Continous Integration

TinderboxTinderbox

Limitations and Complaints● Format is not standard append 3: object count 10 = 10 OK array count 13 = 13 OK 0: 3=3 (0x84f9540) c: 4 OK 1: 0=0 (0x84f9510) c: 1 OK 2: 1=1 (0x84f9520) c: 1 OK 3: 2=2 (0x84f9530) c: 1 OK 4: 3=3 (0x84f9540) c: 4 OK 5: 4=4 (0x84f9550) c: 1 OK 6: 3=3 (0x84f9540) c: 4 OK 7: 5=5 (0x84f9560) c: 1 OK 8: 6=6 (0x84f9570) c: 1 OK 9: 7=7 (0x84f9580) c: 1 OK 10: 8=8 (0x84f9590) c: 1 OK 11: 9=9 (0x84f95e8) c: 1 OK 12: 3=3 (0x84f9540) c: 4 OK

Page 20: Perl Continous Integration

Take a drinkTake a drink

Page 21: Perl Continous Integration

CABIECABIE

●http://cabie.tigris.org/●Perl based●Web UI and CLI tools●Job daemon

● scheduled build jobs● job priority● job triggers

●Data stored in MySQL●Email notification

Page 22: Perl Continous Integration

CABIECABIE

Page 23: Perl Continous Integration

CABIECABIE

Limitations and Complaints● No installer● Format is not standard

● Whatever text your build/test spit out and return

● It's ugly too● No community support

Page 24: Perl Continous Integration

Take a drinkTake a drink

Page 25: Perl Continous Integration

SmolderSmolder

●http://github.com/mpeters/smolder/tree/master●Perl based●Web UI●Some CLI tools●CPAN installable●Public and Private

● understands projects● understands developers

●Being used for Parrot VM project

Page 26: Perl Continous Integration

SmolderSmolder

●View detailed reports about exactly what failed● Ajax/on-demand● Much easier to find what went wrong

●All reports are submitted TAP Archives●All data stored in SQLite●Notification channels

● Email● Atom

●Tags●Trend reporting

Page 27: Perl Continous Integration

SmolderSmolder

Page 28: Perl Continous Integration

SmolderSmolder

Page 29: Perl Continous Integration

SmolderSmolder

Limitations and Complaints● Fair number of dependecies

● 44 deps● 132 deps of deps of deps...

● HTTP::Server::Simple isn't very reliable● Hard coded notification options (only email and Atom)

● No plugins for extra features● No integration with other systems

Page 30: Perl Continous Integration

SmolderSmolder

Limitations and Complaints● No integrated build system

● simple bash script + cron● SmokeRunner::Multi● Module::Build::Smolder

● No notifications of build failures

Page 31: Perl Continous Integration

Take a drinkTake a drink

Page 32: Perl Continous Integration

My Dream DateMy Dream Date

●Smolder and Buildbot sitting in a tree...●Separate, but integrated build loop and reporting●Build status and detailed test reporting●Optionally distributed for multiple platforms and parallel builds●Standard formats

● TAP● Something for the build notifications

Page 33: Perl Continous Integration

My Dream DateMy Dream Date

●Pluggable architecture● Notifications (email, twitter, building alarm system)● SCM support● Common build systems (make, Makefile.PL,

Build.PL, Ant, Maven, rake)●Expose the TAP metadata for plugins to use

● Link to bug reports● Link to source code or specs● visual diffs

●Installable via CPAN●Packagable for distros

Page 34: Perl Continous Integration

All comics borrowed fromToothpaste For Dinner

http://www.toothpastefordinner.com/

Continuous Integration

Tools in PerlMichael PetersPlus Three, LP

¿?