SlideShare a Scribd company logo
1 of 44
Download to read offline
The Famous Cows of Cambridge
A non-standard use-case for Jenkins
Sarah Woodall, NXP Semiconductors
#jenkinsconf
Footer
What this talk is about
•  How (and why) we use Jenkins to test our software
automatically using a farm of custom hardware
•  The plugins and features of Jenkins that help
•  Improvements we would love to see
•  Why we think the Workflow Plugin will be important
2
#jenkinsconf
Setting the scene
#jenkinsconf
Some of the world’s most photographed cows
4
Photo by Alex Brown
(originally posted to Flickr
as Cows and King's)
[CC BY 2.0 (http://
creativecommons.org/
licenses/by/2.0)], via
Wikimedia Commons
#jenkinsconf
The product that our Jenkins builds and tests
A software
development
toolchain based
on Eclipse and
GCC/GDB
•  Designed for ease of use
with NXP’s ARM-based
LPC microcontrollers
•  Hosted on Windows, Mac,
Linux (separate installers)
#jenkinsconf
LPCXpresso in normal use
6
Host computer
running
LPCXpresso
Debug probe
USB
Development board
Target MCU
Stub
#jenkinsconf
LPCXpresso’s components
Open-source IDE built and tested by the Eclipse Foundation
Public releases three times a year
GNU tools (GCC compiler, GDB debugger, ...) built and tested by ARM
Public releases four times a year
Project wizards; Debug perspective; MCU definitions;
support for advanced features such as Trace, etc ...
Written locally: our responsibility to build and test
Debug stubs: let GDB talk to NXP MCUs on target boards via USB
Many target/probe/host platform combinations => many stubs!
Written locally: our responsibility to build and test
Target software: C Libraries; LPC-Open related components; ...
Written locally: our responsibility to build and test
#jenkinsconf
Testing LPCXpresso’s
debug stubs
8
#jenkinsconf
Manual testing will not get us very far
9
#jenkinsconf
Debug stubs: the scale of the testing problem
This matrix is only a subset
•  New targets and debug probes
are constantly being added
•  We have to run the same tests
over again for each host platform
#jenkinsconf
It’s not enough to run the tests just once
Why test frequently?
•  It’s much easier to find problems straight away
•  Developers see what is wrong while their work
is still fresh in their minds
Why test everything, everywhere?
•  Many of the stubs share common code:
change one – break the others!
•  Stubs work with the host OS, so they behave
differently on each platform
11
#jenkinsconf
The solution: automate testing with Jenkins
•  Jenkins builds the three LPCXpresso installers
–  (How it does that is a whole talk for another day)
•  A set of host machines are set up as Jenkins slaves
–  Windows 7, Windows 8.1, Ubuntu, Fedora, Mac, …
•  TestInstall (a matrix job)
–  Uses the Copy Artifact plugin to get the right installer
–  Runs it silently and checks the result
12
#jenkinsconf
Test a wide range of target/probe combinations
•  Using a big matrix job, each testing slave can
–  use every kind of debug probe to communicate
with target boards
–  execute a set of standard images compiled for
each kind of target hardware
13
#jenkinsconf
The snag: how to power-cycle the test boards?
•  In normal use, nobody would expect to have multiple
boards and debug probes attached to one computer
–  They are not designed to work like that!
•  Many of them have to be switched off and on again
as well as being booted before use
•  How can we simulate this from Jenkins?
14
#jenkinsconf
The answer: our test farm has COWs
15
COW =
“Collection
of Wires”
#jenkinsconf
The test farm (much simplified)
16
Jenkins master
TestWindows TestMac TestUbuntu ... many similar Jenkins slaves
Ermintrude Daisy Poppy Willow
USB
probe
+
target
... many similar cows
... and very many more
probe
+
target
probe
+
target
probe
+
target
probe
+
target
probe
+
target
probe
+
target
probe
+
target
probe
+
target
USB
#jenkinsconf
Part of the Cambridge herd
17
#jenkinsconf
An expatriate cow
18
Our Jenkins master drives this laptop in California as a (rather slow) slave
#jenkinsconf
How are our cows connected today?
•  Cows are physically
plugged in to particular
test machines
•  We run a special job to
tell Jenkins whenever a
cow has been moved
•  All the test jobs begin by
copying over the artifact
that this job created
19
#jenkinsconf
Summary Display shows test coverage available
The result of the
ConfigureTestFarm
job shows us
where the gaps in
our testing are
#jenkinsconf
Test results overview shown in Jenkins
Results table
created with the
Jenkins Summary
Display Plugin
#jenkinsconf
Tests are defined using Robot Framework
•  Open source; easily extended using Python
•  Works on all our supported platforms
•  Ready-made output display formatted in HTML
•  Easy to integrate with Jenkins
22
robotframework.org
#jenkinsconf
Links in our results table lead to Robot’s reports
#jenkinsconf
Drilling down further shows more detail
#jenkinsconf
A cow in action
25
#jenkinsconf
A cow driving a development board
26
#jenkinsconf
More automation
Testing other aspects of LPCXpresso
#jenkinsconf
Importing and compiling 2000 templates
28
#jenkinsconf
Uploading, downloading, …
•  Jenkins uploads our build artifacts to a cloud server
for easy access by colleagues in remote locations
•  A shared cloud slave enables communication with a
distant group’s Jenkins instance
–  Their Jenkins uploads zipped packages as artifacts
–  Our Jenkins fetches them, unpacks them and runs
them through our test farm, reporting results by email
29
#jenkinsconf
The plugins and features of
Jenkins that help us most
#jenkinsconf
Our favourite plugins
•  Exclusion
•  Conditional buildstep
•  EnvInject
•  Parameterized trigger
•  Matrix combinations
•  Promoted builds
•  Copy artifact
•  Node/label parameters
•  Summary display
•  Description setter
•  Build timeout
•  Green balls
31
#jenkinsconf
Things we do with build parameters
•  Check out from a branch of the source
•  Name a separate exclusion resource on each slave
•  Allow interactive input to Groovy scripts
•  Select matrix combinations dynamically
32
#jenkinsconf
Selecting matrix combinations dynamically
33
This is part of the
configuration for a job
called LaunchTestMatrix
#jenkinsconf
Matrix combinations example
This is generated automatically by a script
COMBINATIONS=(PROBE=="LPC-Link"&&(TARGET=="LPC2138"||
TARGET=="LPC11U14_201"||TARGET=="LPC1114_301"||
TARGET=="LPC1549"))||(PROBE=="RedProbe
+"&&(TARGET=="LPC2368"||TARGET=="LPC1768"))||(PROBE=="LPC-
Link2"&&(TARGET=="LPC4337"||TARGET=="LPC1768"||
TARGET=="LPC4330_SPIFI_1M_64K"||TARGET=="LPC1227_301"||
TARGET=="LPC1830_NGX_SPIFI"||TARGET=="LPC4370_SPIFI"||
TARGET=="LPC1549"||TARGET=="LPC11U68"||
TARGET=="LPC54102J512"||TARGET=="LPC810"))||(PROBE=="RDB-
Link"&&(TARGET=="LPC1768"))||(PROBE=="CMSIS-
DAP"&&(TARGET=="LPC11U68"||TARGET=="LPC824"||
TARGET=="LPC1549"||TARGET=="LPC4370_SPIFI"||
TARGET=="LPC54102J512"||TARGET=="LPC1768"))
34
#jenkinsconf
Exclusion to manage shared resources
The whole point of the cows is to have only one target
board/probe combination switched on at one time.
•  What if more than one job is running on the slave?
Our solution: use the Jenkins Exclusion Plugin
•  Define a resource called ${SLAVE}_BOARDS
•  Claim it before running each test
35
#jenkinsconf
Our Jenkins wish-list
#jenkinsconf
We do love Jenkins, but it would be nice if …
•  You could select one configuration in a matrix job
when copying artifacts from a permalink
•  There was proper support for source-code branches
•  The Cross-platform shell plugin worked better
•  Matrix jobs were first-class citizens
37
#jenkinsconf
Automated is good,
but scripted is better!
#jenkinsconf
Our job structure is quite complicated
Visualization created with the
Jenkins Dependency Graph Plugin
39
#jenkinsconf
We think the Workflow plugin will help
•  Allows complicated job structures to be expressed
concisely as scripts
•  Easier to read, to write and to manage
But
•  We shall need good support for matrix jobs
40
#jenkinsconf
What is special about our
use-case for Jenkins
#jenkinsconf
Our world is a matrix world
•  Our test farm is a sparse multi-dimensional matrix
•  The hardware is reconfigurable, so the Jenkins
model of it has to be flexible, too
•  We need build parameters and combination filters to
manage this complexity
•  The proper functioning of matrix jobs is essential
42
#jenkinsconf
•  www.lpcware.com/lpcxpresso
•  sarah.woodall@nxp.com
•  sarah@woodall.org.uk
Questions?
London, UK 23-24 June

More Related Content

What's hot

JUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyJUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyCloudBees
 
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...CloudBees
 
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...CloudBees
 
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...CloudBees
 
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"CloudBees
 
Scaling your jenkins master with docker
Scaling your jenkins master with dockerScaling your jenkins master with docker
Scaling your jenkins master with dockerChristophe Muller
 
Brujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityBrujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityDamien Coraboeuf
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleJulien Pivotto
 
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesAn Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesSteffen Gebert
 
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)Gareth Bowles
 
Jenkins Scriptler in 90mins
Jenkins Scriptler in 90minsJenkins Scriptler in 90mins
Jenkins Scriptler in 90minsLarry Cai
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Longericlongtx
 
Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking JenkinsMiro Cupak
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsMandi Walls
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Andrew Bayer
 
Codecoon - A technical Case Study
Codecoon - A technical Case StudyCodecoon - A technical Case Study
Codecoon - A technical Case StudyMichael Lihs
 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Michal Ziarnik
 
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryCodifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryAlvin Huang
 

What's hot (20)

JUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyJUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made Easy
 
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
 
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
 
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
 
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
 
Scaling your jenkins master with docker
Scaling your jenkins master with dockerScaling your jenkins master with docker
Scaling your jenkins master with docker
 
Brujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityBrujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalability
 
JUC 2015 Pipeline Scaling
JUC 2015 Pipeline ScalingJUC 2015 Pipeline Scaling
JUC 2015 Pipeline Scaling
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at Scale
 
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesAn Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
 
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
 
Jenkins Scriptler in 90mins
Jenkins Scriptler in 90minsJenkins Scriptler in 90mins
Jenkins Scriptler in 90mins
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Long
 
Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking Jenkins
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in Operations
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
 
Codecoon - A technical Case Study
Codecoon - A technical Case StudyCodecoon - A technical Case Study
Codecoon - A technical Case Study
 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2
 
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryCodifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
 

Viewers also liked

Converging Communications: The Perfect Storm
Converging Communications: The Perfect StormConverging Communications: The Perfect Storm
Converging Communications: The Perfect StormJoanne Jacobs
 
http---www.isaca.org-ecommerce-PublishingImages-Certificates-ISACAExamCertifi...
http---www.isaca.org-ecommerce-PublishingImages-Certificates-ISACAExamCertifi...http---www.isaca.org-ecommerce-PublishingImages-Certificates-ISACAExamCertifi...
http---www.isaca.org-ecommerce-PublishingImages-Certificates-ISACAExamCertifi...Fabio Azevedo,MBA ICP ITS
 
ruang strategis impl uu desa
ruang strategis impl uu desaruang strategis impl uu desa
ruang strategis impl uu desadeivie rondonuwu
 
Contoh laporan biologi
Contoh laporan biologiContoh laporan biologi
Contoh laporan biologiRidha Sabila
 
Exchange Server Recovery, Conversion & Migration
Exchange Server Recovery, Conversion & MigrationExchange Server Recovery, Conversion & Migration
Exchange Server Recovery, Conversion & MigrationforensicEmailAnalysis
 
Orange is the new black : Une série sur mesure?
Orange is the new black : Une série sur mesure?Orange is the new black : Une série sur mesure?
Orange is the new black : Une série sur mesure?laurence allard
 
Trucs et astuces pour débuter sereinement
Trucs et astuces pour débuter sereinementTrucs et astuces pour débuter sereinement
Trucs et astuces pour débuter sereinementLaurence Vagner
 
KB 2 Pandangan Agama-agama terhadap Tindakan Praktik Kebidanan Aborsi
KB 2 Pandangan Agama-agama terhadap Tindakan Praktik Kebidanan AborsiKB 2 Pandangan Agama-agama terhadap Tindakan Praktik Kebidanan Aborsi
KB 2 Pandangan Agama-agama terhadap Tindakan Praktik Kebidanan Aborsipjj_kemenkes
 
Siska yuliana
Siska yulianaSiska yuliana
Siska yulianataufiq99
 
GWAVACon 2015: Microsoft MVP - Exchange Server Migrations & Updates
GWAVACon 2015: Microsoft MVP - Exchange Server Migrations & UpdatesGWAVACon 2015: Microsoft MVP - Exchange Server Migrations & Updates
GWAVACon 2015: Microsoft MVP - Exchange Server Migrations & UpdatesGWAVA
 
Pandangan Agama Terhadap Kesehatan
Pandangan Agama Terhadap KesehatanPandangan Agama Terhadap Kesehatan
Pandangan Agama Terhadap Kesehatanpjj_kemenkes
 
Pengantar sosiologi
Pengantar sosiologi Pengantar sosiologi
Pengantar sosiologi Chintya M
 
Bahasa dalam Komunikasi
Bahasa dalam KomunikasiBahasa dalam Komunikasi
Bahasa dalam KomunikasiSyahremie Teja
 

Viewers also liked (20)

Uxdesign & hackathon
Uxdesign & hackathonUxdesign & hackathon
Uxdesign & hackathon
 
Converging Communications: The Perfect Storm
Converging Communications: The Perfect StormConverging Communications: The Perfect Storm
Converging Communications: The Perfect Storm
 
http---www.isaca.org-ecommerce-PublishingImages-Certificates-ISACAExamCertifi...
http---www.isaca.org-ecommerce-PublishingImages-Certificates-ISACAExamCertifi...http---www.isaca.org-ecommerce-PublishingImages-Certificates-ISACAExamCertifi...
http---www.isaca.org-ecommerce-PublishingImages-Certificates-ISACAExamCertifi...
 
ruang strategis impl uu desa
ruang strategis impl uu desaruang strategis impl uu desa
ruang strategis impl uu desa
 
PartnerCertificate_2016
PartnerCertificate_2016PartnerCertificate_2016
PartnerCertificate_2016
 
MaMuVi
MaMuViMaMuVi
MaMuVi
 
Contoh laporan biologi
Contoh laporan biologiContoh laporan biologi
Contoh laporan biologi
 
Exchange Server Recovery, Conversion & Migration
Exchange Server Recovery, Conversion & MigrationExchange Server Recovery, Conversion & Migration
Exchange Server Recovery, Conversion & Migration
 
Presentacion electivo 2016
Presentacion electivo 2016Presentacion electivo 2016
Presentacion electivo 2016
 
Orange is the new black : Une série sur mesure?
Orange is the new black : Une série sur mesure?Orange is the new black : Une série sur mesure?
Orange is the new black : Une série sur mesure?
 
Trucs et astuces pour débuter sereinement
Trucs et astuces pour débuter sereinementTrucs et astuces pour débuter sereinement
Trucs et astuces pour débuter sereinement
 
Makalah bahaya merokok (2)
Makalah bahaya merokok (2)Makalah bahaya merokok (2)
Makalah bahaya merokok (2)
 
KB 2 Pandangan Agama-agama terhadap Tindakan Praktik Kebidanan Aborsi
KB 2 Pandangan Agama-agama terhadap Tindakan Praktik Kebidanan AborsiKB 2 Pandangan Agama-agama terhadap Tindakan Praktik Kebidanan Aborsi
KB 2 Pandangan Agama-agama terhadap Tindakan Praktik Kebidanan Aborsi
 
Siska yuliana
Siska yulianaSiska yuliana
Siska yuliana
 
GWAVACon 2015: Microsoft MVP - Exchange Server Migrations & Updates
GWAVACon 2015: Microsoft MVP - Exchange Server Migrations & UpdatesGWAVACon 2015: Microsoft MVP - Exchange Server Migrations & Updates
GWAVACon 2015: Microsoft MVP - Exchange Server Migrations & Updates
 
Pandangan Agama Terhadap Kesehatan
Pandangan Agama Terhadap KesehatanPandangan Agama Terhadap Kesehatan
Pandangan Agama Terhadap Kesehatan
 
Pilihan kata-diksi
Pilihan kata-diksiPilihan kata-diksi
Pilihan kata-diksi
 
Pengantar sosiologi
Pengantar sosiologi Pengantar sosiologi
Pengantar sosiologi
 
Bahasa dalam Komunikasi
Bahasa dalam KomunikasiBahasa dalam Komunikasi
Bahasa dalam Komunikasi
 
Blessed to Bless
Blessed to BlessBlessed to Bless
Blessed to Bless
 

Similar to JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Jenkins

JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...CloudBees
 
Grooving with Jenkins
Grooving with JenkinsGrooving with Jenkins
Grooving with JenkinsAnton Weiss
 
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...CloudBees
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup PuneUmesh Kumhar
 
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosJUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosCloudBees
 
Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012Anton Arhipov
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using JenkinsRogue Wave Software
 
Enabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source JenkinsEnabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source JenkinsMasood Jan
 
Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Kurt Madel
 
Introduction to Jenkins X
Introduction to Jenkins XIntroduction to Jenkins X
Introduction to Jenkins XFaithlin Paul
 
Moving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresMoving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresFrits Van Der Holst
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins PipelinesSteffen Gebert
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
TYPO3 CMS deployment with Jenkins CI
TYPO3 CMS deployment with Jenkins CITYPO3 CMS deployment with Jenkins CI
TYPO3 CMS deployment with Jenkins CIderdanne
 
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Ohad Basan
 
Taming iOS Testing at Square -- JUC West 2015
Taming iOS Testing at Square -- JUC West 2015Taming iOS Testing at Square -- JUC West 2015
Taming iOS Testing at Square -- JUC West 2015Michael Tauraso
 
Using Prometheus to monitor your build pipelines
Using Prometheus to monitor your build pipelinesUsing Prometheus to monitor your build pipelines
Using Prometheus to monitor your build pipelinesLander Van den Bulcke
 
Automating with NX-OS: Let's Get Started!
Automating with NX-OS: Let's Get Started!Automating with NX-OS: Let's Get Started!
Automating with NX-OS: Let's Get Started!Cisco DevNet
 

Similar to JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Jenkins (20)

JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
 
Grooving with Jenkins
Grooving with JenkinsGrooving with Jenkins
Grooving with Jenkins
 
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup Pune
 
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosJUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
 
Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Enabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source JenkinsEnabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source Jenkins
 
Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015
 
Introduction to Jenkins X
Introduction to Jenkins XIntroduction to Jenkins X
Introduction to Jenkins X
 
Moving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresMoving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventures
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
TYPO3 CMS deployment with Jenkins CI
TYPO3 CMS deployment with Jenkins CITYPO3 CMS deployment with Jenkins CI
TYPO3 CMS deployment with Jenkins CI
 
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
 
Taming iOS Testing at Square -- JUC West 2015
Taming iOS Testing at Square -- JUC West 2015Taming iOS Testing at Square -- JUC West 2015
Taming iOS Testing at Square -- JUC West 2015
 
Using Prometheus to monitor your build pipelines
Using Prometheus to monitor your build pipelinesUsing Prometheus to monitor your build pipelines
Using Prometheus to monitor your build pipelines
 
Automating with NX-OS: Let's Get Started!
Automating with NX-OS: Let's Get Started!Automating with NX-OS: Let's Get Started!
Automating with NX-OS: Let's Get Started!
 
Juc boston2014.pptx
Juc boston2014.pptxJuc boston2014.pptx
Juc boston2014.pptx
 

More from CloudBees

JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)CloudBees
 
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...CloudBees
 
JUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UIJUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UICloudBees
 
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...CloudBees
 
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL PluginJUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL PluginCloudBees
 
JUC Europe 2015: A Reproducible Build Environment with Jenkins
JUC Europe 2015: A Reproducible Build Environment with JenkinsJUC Europe 2015: A Reproducible Build Environment with Jenkins
JUC Europe 2015: A Reproducible Build Environment with JenkinsCloudBees
 
Pimp your jenkins platform with docker - Devops.com 2015/11
Pimp your jenkins platform with docker - Devops.com 2015/11Pimp your jenkins platform with docker - Devops.com 2015/11
Pimp your jenkins platform with docker - Devops.com 2015/11CloudBees
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsCloudBees
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014CloudBees
 
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CloudBees
 
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)CloudBees
 
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...CloudBees
 
Rethinking Application Design for the Cloud
Rethinking Application Design for the CloudRethinking Application Design for the Cloud
Rethinking Application Design for the CloudCloudBees
 
The Fall of Giants
The Fall of GiantsThe Fall of Giants
The Fall of GiantsCloudBees
 
Getting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceGetting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceCloudBees
 

More from CloudBees (15)

JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
 
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
 
JUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UIJUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UI
 
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
 
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL PluginJUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
 
JUC Europe 2015: A Reproducible Build Environment with Jenkins
JUC Europe 2015: A Reproducible Build Environment with JenkinsJUC Europe 2015: A Reproducible Build Environment with Jenkins
JUC Europe 2015: A Reproducible Build Environment with Jenkins
 
Pimp your jenkins platform with docker - Devops.com 2015/11
Pimp your jenkins platform with docker - Devops.com 2015/11Pimp your jenkins platform with docker - Devops.com 2015/11
Pimp your jenkins platform with docker - Devops.com 2015/11
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
 
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
 
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
 
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
 
Rethinking Application Design for the Cloud
Rethinking Application Design for the CloudRethinking Application Design for the Cloud
Rethinking Application Design for the Cloud
 
The Fall of Giants
The Fall of GiantsThe Fall of Giants
The Fall of Giants
 
Getting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceGetting Started with Platform-as-a-Service
Getting Started with Platform-as-a-Service
 

Recently uploaded

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Recently uploaded (20)

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Jenkins

  • 1. The Famous Cows of Cambridge A non-standard use-case for Jenkins Sarah Woodall, NXP Semiconductors
  • 2. #jenkinsconf Footer What this talk is about •  How (and why) we use Jenkins to test our software automatically using a farm of custom hardware •  The plugins and features of Jenkins that help •  Improvements we would love to see •  Why we think the Workflow Plugin will be important 2
  • 4. #jenkinsconf Some of the world’s most photographed cows 4 Photo by Alex Brown (originally posted to Flickr as Cows and King's) [CC BY 2.0 (http:// creativecommons.org/ licenses/by/2.0)], via Wikimedia Commons
  • 5. #jenkinsconf The product that our Jenkins builds and tests A software development toolchain based on Eclipse and GCC/GDB •  Designed for ease of use with NXP’s ARM-based LPC microcontrollers •  Hosted on Windows, Mac, Linux (separate installers)
  • 6. #jenkinsconf LPCXpresso in normal use 6 Host computer running LPCXpresso Debug probe USB Development board Target MCU Stub
  • 7. #jenkinsconf LPCXpresso’s components Open-source IDE built and tested by the Eclipse Foundation Public releases three times a year GNU tools (GCC compiler, GDB debugger, ...) built and tested by ARM Public releases four times a year Project wizards; Debug perspective; MCU definitions; support for advanced features such as Trace, etc ... Written locally: our responsibility to build and test Debug stubs: let GDB talk to NXP MCUs on target boards via USB Many target/probe/host platform combinations => many stubs! Written locally: our responsibility to build and test Target software: C Libraries; LPC-Open related components; ... Written locally: our responsibility to build and test
  • 9. #jenkinsconf Manual testing will not get us very far 9
  • 10. #jenkinsconf Debug stubs: the scale of the testing problem This matrix is only a subset •  New targets and debug probes are constantly being added •  We have to run the same tests over again for each host platform
  • 11. #jenkinsconf It’s not enough to run the tests just once Why test frequently? •  It’s much easier to find problems straight away •  Developers see what is wrong while their work is still fresh in their minds Why test everything, everywhere? •  Many of the stubs share common code: change one – break the others! •  Stubs work with the host OS, so they behave differently on each platform 11
  • 12. #jenkinsconf The solution: automate testing with Jenkins •  Jenkins builds the three LPCXpresso installers –  (How it does that is a whole talk for another day) •  A set of host machines are set up as Jenkins slaves –  Windows 7, Windows 8.1, Ubuntu, Fedora, Mac, … •  TestInstall (a matrix job) –  Uses the Copy Artifact plugin to get the right installer –  Runs it silently and checks the result 12
  • 13. #jenkinsconf Test a wide range of target/probe combinations •  Using a big matrix job, each testing slave can –  use every kind of debug probe to communicate with target boards –  execute a set of standard images compiled for each kind of target hardware 13
  • 14. #jenkinsconf The snag: how to power-cycle the test boards? •  In normal use, nobody would expect to have multiple boards and debug probes attached to one computer –  They are not designed to work like that! •  Many of them have to be switched off and on again as well as being booted before use •  How can we simulate this from Jenkins? 14
  • 15. #jenkinsconf The answer: our test farm has COWs 15 COW = “Collection of Wires”
  • 16. #jenkinsconf The test farm (much simplified) 16 Jenkins master TestWindows TestMac TestUbuntu ... many similar Jenkins slaves Ermintrude Daisy Poppy Willow USB probe + target ... many similar cows ... and very many more probe + target probe + target probe + target probe + target probe + target probe + target probe + target probe + target USB
  • 17. #jenkinsconf Part of the Cambridge herd 17
  • 18. #jenkinsconf An expatriate cow 18 Our Jenkins master drives this laptop in California as a (rather slow) slave
  • 19. #jenkinsconf How are our cows connected today? •  Cows are physically plugged in to particular test machines •  We run a special job to tell Jenkins whenever a cow has been moved •  All the test jobs begin by copying over the artifact that this job created 19
  • 20. #jenkinsconf Summary Display shows test coverage available The result of the ConfigureTestFarm job shows us where the gaps in our testing are
  • 21. #jenkinsconf Test results overview shown in Jenkins Results table created with the Jenkins Summary Display Plugin
  • 22. #jenkinsconf Tests are defined using Robot Framework •  Open source; easily extended using Python •  Works on all our supported platforms •  Ready-made output display formatted in HTML •  Easy to integrate with Jenkins 22 robotframework.org
  • 23. #jenkinsconf Links in our results table lead to Robot’s reports
  • 26. #jenkinsconf A cow driving a development board 26
  • 29. #jenkinsconf Uploading, downloading, … •  Jenkins uploads our build artifacts to a cloud server for easy access by colleagues in remote locations •  A shared cloud slave enables communication with a distant group’s Jenkins instance –  Their Jenkins uploads zipped packages as artifacts –  Our Jenkins fetches them, unpacks them and runs them through our test farm, reporting results by email 29
  • 30. #jenkinsconf The plugins and features of Jenkins that help us most
  • 31. #jenkinsconf Our favourite plugins •  Exclusion •  Conditional buildstep •  EnvInject •  Parameterized trigger •  Matrix combinations •  Promoted builds •  Copy artifact •  Node/label parameters •  Summary display •  Description setter •  Build timeout •  Green balls 31
  • 32. #jenkinsconf Things we do with build parameters •  Check out from a branch of the source •  Name a separate exclusion resource on each slave •  Allow interactive input to Groovy scripts •  Select matrix combinations dynamically 32
  • 33. #jenkinsconf Selecting matrix combinations dynamically 33 This is part of the configuration for a job called LaunchTestMatrix
  • 34. #jenkinsconf Matrix combinations example This is generated automatically by a script COMBINATIONS=(PROBE=="LPC-Link"&&(TARGET=="LPC2138"|| TARGET=="LPC11U14_201"||TARGET=="LPC1114_301"|| TARGET=="LPC1549"))||(PROBE=="RedProbe +"&&(TARGET=="LPC2368"||TARGET=="LPC1768"))||(PROBE=="LPC- Link2"&&(TARGET=="LPC4337"||TARGET=="LPC1768"|| TARGET=="LPC4330_SPIFI_1M_64K"||TARGET=="LPC1227_301"|| TARGET=="LPC1830_NGX_SPIFI"||TARGET=="LPC4370_SPIFI"|| TARGET=="LPC1549"||TARGET=="LPC11U68"|| TARGET=="LPC54102J512"||TARGET=="LPC810"))||(PROBE=="RDB- Link"&&(TARGET=="LPC1768"))||(PROBE=="CMSIS- DAP"&&(TARGET=="LPC11U68"||TARGET=="LPC824"|| TARGET=="LPC1549"||TARGET=="LPC4370_SPIFI"|| TARGET=="LPC54102J512"||TARGET=="LPC1768")) 34
  • 35. #jenkinsconf Exclusion to manage shared resources The whole point of the cows is to have only one target board/probe combination switched on at one time. •  What if more than one job is running on the slave? Our solution: use the Jenkins Exclusion Plugin •  Define a resource called ${SLAVE}_BOARDS •  Claim it before running each test 35
  • 37. #jenkinsconf We do love Jenkins, but it would be nice if … •  You could select one configuration in a matrix job when copying artifacts from a permalink •  There was proper support for source-code branches •  The Cross-platform shell plugin worked better •  Matrix jobs were first-class citizens 37
  • 38. #jenkinsconf Automated is good, but scripted is better!
  • 39. #jenkinsconf Our job structure is quite complicated Visualization created with the Jenkins Dependency Graph Plugin 39
  • 40. #jenkinsconf We think the Workflow plugin will help •  Allows complicated job structures to be expressed concisely as scripts •  Easier to read, to write and to manage But •  We shall need good support for matrix jobs 40
  • 41. #jenkinsconf What is special about our use-case for Jenkins
  • 42. #jenkinsconf Our world is a matrix world •  Our test farm is a sparse multi-dimensional matrix •  The hardware is reconfigurable, so the Jenkins model of it has to be flexible, too •  We need build parameters and combination filters to manage this complexity •  The proper functioning of matrix jobs is essential 42