Perl Continous Integration

Michael Peters
Michael PetersDirector of Technology at Plus Three, LP
Continuous Integration
                 Tools in Perl
                              Michael Peters
                              Plus Three, LP




YAPC::NA 10
Pittsburgh, PA
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
What is CI?

●Home grown (bash + email)
●CruiseControl


●Buildbot


●Tinderbox


●CABIE


●Smolder


Hudson, TeamCity, Continuum, Cerberus, ControlTier,
●

OpenMake Mojo, lots of others
Take a drink
CruiseControl

●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
CruiseControl

●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
CruiseControl
CruiseControl

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
CruiseControl

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 drink
Buildbot

●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
Buildbot

●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
Buildbot
Buildbot

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 drink
Tinderbox

●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
Tinderbox
Tinderbox

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
Tinderbox

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 drink
CABIE

●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
CABIE
CABIE

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 drink
Smolder

●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
Smolder

●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
Smolder
Smolder
Smolder

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
Smolder

Limitations and Complaints
 ● No integrated build system


    ● simple bash script + cron


    ● SmokeRunner::Multi


    ● Module::Build::Smolder


 ● No notifications of build failures
Take a drink
My 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
My 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
Continuous Integration
                         Tools in Perl
                                      Michael Peters
                                      Plus Three, LP




                           ¿?
       All comics borrowed from
        Toothpaste For Dinner
http://www.toothpastefordinner.com/
1 of 34

Recommended

Smolder Introduction by
Smolder IntroductionSmolder Introduction
Smolder IntroductionMichael Peters
2.1K views17 slides
Testing Toolbox by
Testing ToolboxTesting Toolbox
Testing ToolboxMichael Peters
2.2K views29 slides
Integration Testing Practice using Perl by
Integration Testing Practice using PerlIntegration Testing Practice using Perl
Integration Testing Practice using PerlMasaki Nakagawa
6.6K views56 slides
Acceptance testing plone sites and add ons with robot framework and selenium by
Acceptance testing plone sites and add ons with robot framework and seleniumAcceptance testing plone sites and add ons with robot framework and selenium
Acceptance testing plone sites and add ons with robot framework and seleniumAsko Soukka
23.5K views30 slides
Robotframework by
RobotframeworkRobotframework
RobotframeworkElla Sun
519 views19 slides
Robot framework by
Robot frameworkRobot framework
Robot frameworkRochak Bhalla
724 views36 slides

More Related Content

What's hot

Ui Testing with Ghost Inspector by
Ui Testing with Ghost InspectorUi Testing with Ghost Inspector
Ui Testing with Ghost InspectorHarvard Web Working Group
3.6K views22 slides
Scripting robot by
Scripting robotScripting robot
Scripting robotChonlasith Jucksriporn
1.3K views16 slides
Test driving-qml by
Test driving-qmlTest driving-qml
Test driving-qmlArtem Marchenko
18.1K views19 slides
POUG2019 - Test your PL/SQL - your database will love you by
POUG2019 - Test your PL/SQL - your database will love youPOUG2019 - Test your PL/SQL - your database will love you
POUG2019 - Test your PL/SQL - your database will love youJacek Gebal
261 views45 slides
Introducing Ghost Inspector by
Introducing Ghost InspectorIntroducing Ghost Inspector
Introducing Ghost InspectorNeil Mansilla
807 views14 slides
Java-Jersey 到 Python-Flask 服務不中斷重構之旅 by
Java-Jersey 到 Python-Flask 服務不中斷重構之旅Java-Jersey 到 Python-Flask 服務不中斷重構之旅
Java-Jersey 到 Python-Flask 服務不中斷重構之旅Max Lai
1.5K views41 slides

What's hot(20)

POUG2019 - Test your PL/SQL - your database will love you by Jacek Gebal
POUG2019 - Test your PL/SQL - your database will love youPOUG2019 - Test your PL/SQL - your database will love you
POUG2019 - Test your PL/SQL - your database will love you
Jacek Gebal261 views
Introducing Ghost Inspector by Neil Mansilla
Introducing Ghost InspectorIntroducing Ghost Inspector
Introducing Ghost Inspector
Neil Mansilla807 views
Java-Jersey 到 Python-Flask 服務不中斷重構之旅 by Max Lai
Java-Jersey 到 Python-Flask 服務不中斷重構之旅Java-Jersey 到 Python-Flask 服務不中斷重構之旅
Java-Jersey 到 Python-Flask 服務不中斷重構之旅
Max Lai1.5K views
Testing sync engine by Ilya Puchka
Testing sync engineTesting sync engine
Testing sync engine
Ilya Puchka350 views
Javascript test frameworks by talkitbr
Javascript test frameworksJavascript test frameworks
Javascript test frameworks
talkitbr393 views
Releasing High Quality Packages - Longhorn PHP 2021 by Colin O'Dell
Releasing High Quality Packages - Longhorn PHP 2021Releasing High Quality Packages - Longhorn PHP 2021
Releasing High Quality Packages - Longhorn PHP 2021
Colin O'Dell168 views
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ... by Stefan Teixeira
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
Stefan Teixeira258 views
Hadoop Summit 2013 : Continuous Integration on top of hadoop by Wisely chen
Hadoop Summit 2013 : Continuous Integration on top of hadoopHadoop Summit 2013 : Continuous Integration on top of hadoop
Hadoop Summit 2013 : Continuous Integration on top of hadoop
Wisely chen3.7K views
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer by Stefan Teixeira
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecerTDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
Stefan Teixeira974 views
KYSUC - Keep Your Schema Under Control by Coimbra JUG
KYSUC - Keep Your Schema Under ControlKYSUC - Keep Your Schema Under Control
KYSUC - Keep Your Schema Under Control
Coimbra JUG5.7K views
Managing Modules Without Going Crazy (NPW 2007) by brian d foy
Managing Modules Without Going Crazy (NPW 2007)Managing Modules Without Going Crazy (NPW 2007)
Managing Modules Without Going Crazy (NPW 2007)
brian d foy1.8K views
Create an architecture for web test automation by Elias Nogueira
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automation
Elias Nogueira1.3K views

Similar to Perl Continous Integration

Instant LAMP Stack with Vagrant and Puppet by
Instant LAMP Stack with Vagrant and PuppetInstant LAMP Stack with Vagrant and Puppet
Instant LAMP Stack with Vagrant and PuppetPatrick Lee
5.6K views22 slides
Deploying software at Scale by
Deploying software at ScaleDeploying software at Scale
Deploying software at ScaleKris Buytaert
2.5K views44 slides
How to plan and define your CI-CD pipeline by
How to plan and define your CI-CD pipelineHow to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipelineElasTest Project
844 views54 slides
Scaling Magento by
Scaling MagentoScaling Magento
Scaling MagentoCopious
549 views61 slides
Road to sbt 1.0 paved with server by
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with serverEugene Yokota
4.9K views53 slides
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro... by
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...Linaro
3.3K views37 slides

Similar to Perl Continous Integration(20)

Instant LAMP Stack with Vagrant and Puppet by Patrick Lee
Instant LAMP Stack with Vagrant and PuppetInstant LAMP Stack with Vagrant and Puppet
Instant LAMP Stack with Vagrant and Puppet
Patrick Lee5.6K views
Deploying software at Scale by Kris Buytaert
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
Kris Buytaert2.5K views
How to plan and define your CI-CD pipeline by ElasTest Project
How to plan and define your CI-CD pipelineHow to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipeline
ElasTest Project844 views
Scaling Magento by Copious
Scaling MagentoScaling Magento
Scaling Magento
Copious549 views
Road to sbt 1.0 paved with server by Eugene Yokota
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with server
Eugene Yokota4.9K views
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro... by Linaro
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
Linaro3.3K views
LCE13: Test and Validation Summit: The future of testing at Linaro by Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at Linaro
Linaro3.3K views
Survival of the Continuist by Paul Blundell
Survival of the ContinuistSurvival of the Continuist
Survival of the Continuist
Paul Blundell1.8K views
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020 by OdessaJS Conf
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
OdessaJS Conf492 views
ContainerCon - Test Driven Infrastructure by Yury Tsarev
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven Infrastructure
Yury Tsarev2.6K views
Creating a mature puppet system by rkhatibi
Creating a mature puppet systemCreating a mature puppet system
Creating a mature puppet system
rkhatibi284 views
Creating a Mature Puppet System by Puppet
Creating a Mature Puppet SystemCreating a Mature Puppet System
Creating a Mature Puppet System
Puppet4.6K views
CodeFest 2013. Mosesohn M. — Automating environments with Cobbler by CodeFest
CodeFest 2013. Mosesohn M. — Automating environments with CobblerCodeFest 2013. Mosesohn M. — Automating environments with Cobbler
CodeFest 2013. Mosesohn M. — Automating environments with Cobbler
CodeFest1.3K views
Making sense of the front-end, for PHP developers by Lewiz
Making sense of the front-end, for PHP developersMaking sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developers
Lewiz 85 views
Creating a reasonable project boilerplate by Stanislav Petrov
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
Stanislav Petrov104 views
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp Altanta by Puppet
Don't Suck at Building Stuff  - Mykel Alvis at Puppet Camp AltantaDon't Suck at Building Stuff  - Mykel Alvis at Puppet Camp Altanta
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp Altanta
Puppet1.2K views
Passing the Joel Test in the PHP World (phpbnl10) by Lorna Mitchell
Passing the Joel Test in the PHP World (phpbnl10)Passing the Joel Test in the PHP World (phpbnl10)
Passing the Joel Test in the PHP World (phpbnl10)
Lorna Mitchell9.2K views
Liferay portals in real projects by IBACZ
Liferay portals  in real projectsLiferay portals  in real projects
Liferay portals in real projects
IBACZ5.8K views
A Kernel of Truth: Intrusion Detection and Attestation with eBPF by oholiab
A Kernel of Truth: Intrusion Detection and Attestation with eBPFA Kernel of Truth: Intrusion Detection and Attestation with eBPF
A Kernel of Truth: Intrusion Detection and Attestation with eBPF
oholiab595 views

Recently uploaded

CryptoBotsAI by
CryptoBotsAICryptoBotsAI
CryptoBotsAIchandureddyvadala199
42 views5 slides
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue by
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueVNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueShapeBlue
207 views54 slides
The Power of Heat Decarbonisation Plans in the Built Environment by
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built EnvironmentIES VE
84 views20 slides
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueShapeBlue
265 views23 slides
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...ShapeBlue
141 views29 slides
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlueShapeBlue
152 views23 slides

Recently uploaded(20)

VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue by ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueVNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
ShapeBlue207 views
The Power of Heat Decarbonisation Plans in the Built Environment by IES VE
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built Environment
IES VE84 views
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue265 views
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by ShapeBlue
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
ShapeBlue141 views
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
ShapeBlue152 views
"Node.js Development in 2024: trends and tools", Nikita Galkin by Fwdays
"Node.js Development in 2024: trends and tools", Nikita Galkin "Node.js Development in 2024: trends and tools", Nikita Galkin
"Node.js Development in 2024: trends and tools", Nikita Galkin
Fwdays33 views
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT by ShapeBlue
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBITUpdates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
ShapeBlue208 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue137 views
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ... by ShapeBlue
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...
ShapeBlue120 views
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De... by Moses Kemibaro
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Moses Kemibaro35 views
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...
Optimizing Communication to Optimize Human Behavior - LCBM by Yaman Kumar
Optimizing Communication to Optimize Human Behavior - LCBMOptimizing Communication to Optimize Human Behavior - LCBM
Optimizing Communication to Optimize Human Behavior - LCBM
Yaman Kumar38 views
The Power of Generative AI in Accelerating No Code Adoption.pdf by Saeed Al Dhaheri
The Power of Generative AI in Accelerating No Code Adoption.pdfThe Power of Generative AI in Accelerating No Code Adoption.pdf
The Power of Generative AI in Accelerating No Code Adoption.pdf
Saeed Al Dhaheri39 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays58 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue199 views
The Role of Patterns in the Era of Large Language Models by Yunyao Li
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language Models
Yunyao Li91 views
Business Analyst Series 2023 - Week 4 Session 7 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 7Business Analyst Series 2023 -  Week 4 Session 7
Business Analyst Series 2023 - Week 4 Session 7
DianaGray10146 views
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by ShapeBlue
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
ShapeBlue178 views
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc176 views

Perl Continous Integration

  • 1. Continuous Integration Tools in Perl Michael Peters Plus Three, LP YAPC::NA 10 Pittsburgh, PA
  • 2. 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
  • 3. What is CI? ●Home grown (bash + email) ●CruiseControl ●Buildbot ●Tinderbox ●CABIE ●Smolder Hudson, TeamCity, Continuum, Cerberus, ControlTier, ● OpenMake Mojo, lots of others
  • 5. CruiseControl ●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
  • 6. CruiseControl ●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
  • 8. CruiseControl 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
  • 9. CruiseControl 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
  • 11. Buildbot ●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
  • 12. Buildbot ●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
  • 14. Buildbot 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
  • 16. Tinderbox ●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
  • 18. Tinderbox 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
  • 19. Tinderbox 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
  • 21. CABIE ●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
  • 22. CABIE
  • 23. CABIE 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
  • 25. Smolder ●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
  • 26. Smolder ●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
  • 29. Smolder 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
  • 30. Smolder Limitations and Complaints ● No integrated build system ● simple bash script + cron ● SmokeRunner::Multi ● Module::Build::Smolder ● No notifications of build failures
  • 32. My 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
  • 33. My 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
  • 34. Continuous Integration Tools in Perl Michael Peters Plus Three, LP ¿? All comics borrowed from Toothpaste For Dinner http://www.toothpastefordinner.com/