Perl Continous Integration

download Perl Continous Integration

of 34

  • date post

    21-Oct-2014
  • Category

    Technology

  • view

    7.006
  • download

    1

Embed Size (px)

description

A compare and contrast of Continuous Integration testing tools that can be used for Perl projects and where they all fall short. Also looking at what an ideal solution could look like.

Transcript of Perl Continous Integration

Dead Leaf

YAPC::NA 10Pittsburgh, PA

Continuous IntegrationTools in Perl

Michael PetersPlus Three, LP

What is CI?What is CI?

Build and test all the timeAs soon as you canAs loud as you canOn as many platforms as you needOn as many different configurations as you need

What is CI?What is CI?

Home grown (bash + email)CruiseControlBuildbotTinderboxCABIESmolderHudson, TeamCity, Continuum, Cerberus, ControlTier, OpenMake Mojo, lots of others

Take a drinkTake a drink

CruiseControlCruiseControl

http://cruisecontrol.sourceforge.net/Java basedVery well known, "industry standard"Lots of plugins for lots of things SCM Notification Build management (make, Ant, Maven, rake) Lots more

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

CruiseControlCruiseControl

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

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

Take a drinkTake a drink

BuildbotBuildbot

http://buildbot.net/tracPython basedDesigned to be distributed

master/slave architecture nice for OSS projects and volunteers

Tracks some metrics over time warnings link checks compile time etc

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 UICLI

BuildbotBuildbot

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

Take a drinkTake a drink

TinderboxTinderbox

http://www.mozilla.org/projects/tinderboxPerl basedMozilla Project

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

Add comments to build runsCurrently being rewritten

Seems to use Buildbot underneath

TinderboxTinderbox

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

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

Take a drinkTake a drink

CABIECABIE

http://cabie.tigris.org/Perl basedWeb UI and CLI toolsJob daemon

scheduled build jobs job priority job triggers

Data stored in MySQLEmail notification

CABIECABIE

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

Take a drinkTake a drink

SmolderSmolder

http://github.com/mpeters/smolder/tree/masterPerl basedWeb UISome CLI toolsCPAN installablePublic and Private

understands projects understands developers

Being used for Parrot VM project

SmolderSmolder

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

All reports are submitted TAP ArchivesAll data stored in SQLiteNotification channels

Email Atom

TagsTrend reporting

SmolderSmolder

SmolderSmolder

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

SmolderSmolder

Limitations and Complaints No integrated build system

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

No notifications of build failures

Take a drinkTake a drink

My Dream DateMy Dream Date

Smolder and Buildbot sitting in a tree...Separate, but integrated build loop and reportingBuild status and detailed test reportingOptionally distributed for multiple platforms and parallel buildsStandard formats

TAP Something for the build notifications

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 CPANPackagable for distros

All comics borrowed fromToothpaste For Dinner

http://www.toothpastefordinner.com/

Continuous IntegrationTools in Perl

Michael PetersPlus Three, LP

?

Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34