SlideShare a Scribd company logo
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 Easy
CloudBees
 
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 docker
Christophe Muller
 
Brujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityBrujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalability
Damien Coraboeuf
 
JUC 2015 Pipeline Scaling
JUC 2015 Pipeline ScalingJUC 2015 Pipeline Scaling
JUC 2015 Pipeline Scaling
Damien Coraboeuf
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at Scale
Julien 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 Pipelines
Steffen 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 90mins
Larry Cai
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Long
ericlongtx
 
Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking Jenkins
Miro Cupak
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
Steffen Gebert
 
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
Mandi 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 Study
Michael 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 2
Michal 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 Library
Alvin 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

Uxdesign & hackathon
Uxdesign & hackathonUxdesign & hackathon
Uxdesign & hackathon
Laurence Vagner
 
Converging Communications: The Perfect Storm
Converging Communications: The Perfect StormConverging Communications: The Perfect Storm
Converging Communications: The Perfect Storm
Joanne 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 desa
deivie rondonuwu
 
PartnerCertificate_2016
PartnerCertificate_2016PartnerCertificate_2016
PartnerCertificate_2016
Cumhur KIZILARI MBCS
 
MaMuVi
MaMuViMaMuVi
MaMuVi
Aldo Prinzi
 
Contoh laporan biologi
Contoh laporan biologiContoh laporan biologi
Contoh laporan biologi
Ridha Sabila
 
Exchange Server Recovery, Conversion & Migration
Exchange Server Recovery, Conversion & MigrationExchange Server Recovery, Conversion & Migration
Exchange Server Recovery, Conversion & Migration
forensicEmailAnalysis
 
Presentacion electivo 2016
Presentacion electivo 2016Presentacion electivo 2016
Presentacion electivo 2016
Periodista COEMTAL
 
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 sereinement
Laurence 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 Aborsi
pjj_kemenkes
 
Siska yuliana
Siska yulianaSiska yuliana
Siska yuliana
taufiq99
 
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
GWAVA
 
Pandangan Agama Terhadap Kesehatan
Pandangan Agama Terhadap KesehatanPandangan Agama Terhadap Kesehatan
Pandangan Agama Terhadap Kesehatan
pjj_kemenkes
 
Pilihan kata-diksi
Pilihan kata-diksiPilihan kata-diksi
Pilihan kata-diksi
Chairunnisa Nisa
 
Pengantar sosiologi
Pengantar sosiologi Pengantar sosiologi
Pengantar sosiologi
Chintya M
 
Bahasa dalam Komunikasi
Bahasa dalam KomunikasiBahasa dalam Komunikasi
Bahasa dalam Komunikasi
Syahremie Teja
 
Blessed to Bless
Blessed to BlessBlessed to Bless
Blessed to Bless
Ade Kurniawan
 

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 Jenkins
Anton 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 Pune
Umesh 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 Mesos
CloudBees
 
Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012
Anton Arhipov
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
Rogue 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 Jenkins
Masood 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 2015
Kurt Madel
 
Introduction to Jenkins X
Introduction to Jenkins XIntroduction to Jenkins X
Introduction to Jenkins X
Faithlin 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 adventures
Frits Van Der Holst
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
Steffen Gebert
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
Abe Diaz
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
Valentin Buryakov
 
TYPO3 CMS deployment with Jenkins CI
TYPO3 CMS deployment with Jenkins CITYPO3 CMS deployment with Jenkins CI
TYPO3 CMS deployment with Jenkins CI
derdanne
 
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 2015
Michael 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 pipelines
Lander 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
 
Juc boston2014.pptx
Juc boston2014.pptxJuc boston2014.pptx
Juc boston2014.pptx
Brandon Mueller
 

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 UI
CloudBees
 
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 Plugin
CloudBees
 
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
CloudBees
 
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
CloudBees
 
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
CloudBees
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
CloudBees
 
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 Cloud
CloudBees
 
The Fall of Giants
The Fall of GiantsThe Fall of Giants
The Fall of Giants
CloudBees
 
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
CloudBees
 

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

Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 

Recently uploaded (20)

Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 

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