SlideShare a Scribd company logo
1 of 31
Download to read offline
locate, communicate, accelerate
Optimising the Developer Pipeline:
Deliver Faster & Better
Perforce, Jenkins and pre-submit
Morné Joubert
September 2015
Content
Slide 2 © u-blox Melbourn Ltd.
• Brief info about u-blox
• Our environment
• Our challenges
• Our solution
• stream_tester
• Perforce
• Jenkins
• Pre-submit
u-blox at a glance
• Swiss semiconductor company
• Founded in 1997
• Listed on the SIX Swiss Exchange since 2007 (SIX:UBXN)
• Core competencies
• Cellular communications technologies
• Short range radio technologies
• Satellite based positioning technologies
• Product offering
• Integrated circuits – the foundation of our solutions
• Modules – fully implemented, drop-in solutions
• Services – delivering added value to our solutions
• Market focus
• Automotive – robust, automotive grade products
• Industrial – durable components for professional electronics
• Consumer – mass market ICs and modules
• Business model
• Fabless operation
• Commercial, off-the-shelf products
Slide 3 © u-blox Melbourn Ltd.
Global market leaders rely on u-blox
ConsumerIndustrialAutomotive
Slide 4 © u-blox Melbourn Ltd.
Engineering Environment
• Toolchains are COTS and bespoke
• Different teams on different tool chain versions
• Execution and test platforms
• PC platforms
• Simulators
• FPGA platforms
• chip / modules
• Live air
Slide 5 © u-blox Melbourn Ltd.
Perforce sites
Slide 6 © u-blox Melbourn Ltd.
SanDiego
Lahore
Cork
Melbourn
Leuven
Sgonico
Thalwil
Resource restrictions
• Developing and testing Cellular and wireless products not cheap
• Limited resource availability
• Physical numbers of devices
• Test kit £500k+
• Compilers £5k each
Slide 7 © u-blox Melbourn Ltd.
Challenge for Continuous Integration
• Integration tests can take a long time
• Each test potentially measured in minutes
• Full system test sweep could take days
• Cannot afford the luxury of running all tests on submission
• Queue and resource management is an issue
• Builds and test can sit in the CI queue for a long time
• Cannot afford the luxury of running all builds on submission
Slide 8 © u-blox Melbourn Ltd.
Continuous Integration : our take
• All about change management
• Any change should be visible in workflow
• Code changes
• Tool and compiler changes
• Test inputs
• OS changes
• Any change should be able to be tested before commit
• Version everything
• CI is built on trust
• “cry wolf syndrome”
• Developers need to part of solution
• Fast feedback is not a “nice to have” , it is a requirement
Slide 9 © u-blox Melbourn Ltd.
Default workflow
Slide 10 © u-blox Melbourn Ltd.
TriggerCheck in
Jenkins
Build
Build
Build
Tests
Tests
Tests
Build
Feedback
Submitchange
to stream
Change detected
by Jenkins
Set of pre-definedjobs
are executed
Change validationafter all
itemsexecuted
Providing pre-submit functionality
• User should be able to pre-submit any change to see what effect the change could
have
• pre-submit change could be
• Copy up/Promoting changes to mainline streams
• Prototyping new compiler
• Specific fix for a particular failure
• Jenkins doesn’t providepre-submit framework
Slide 11 © u-blox Melbourn Ltd.
Providing selective Jenkins execution
• Scenario
• Test #85 of 100 fails , suite duration 1 hour, #85 duration 5 minutes
• User wants to test fix to failure by first just re-running failed test
• Scenario
• Build fails only on a particular platform variant
• User want to test fix on only the failed build
• Scenario
• Build in a pipeline fails
• User just wants to test downstream build, not whole chain
• Scenario
• Test seems to only fail on a particular slave connected to particular HW
• User wants to re-run test on that slave only
Slide 12 © u-blox Melbourn Ltd.
Solution: stream_tester
• To pre-submit and specify specific job items in Jenkins an internal client
application was developed called “stream_tester”
Slide 13 © u-blox Melbourn Ltd.
Ability to select
individual jobs
Ability to select
partsof chain
Viewkey indicators
Including P4 CLnumbers
Groupjobsinto tabs
Specific test or parameterscanbe
modified
Integration into P4V
Slide 14 © u-blox Melbourn Ltd.
• Don’t want to give users yet another system to use
• Easy option was just to add it as a plugin to P4V
Integration into P4V
• User clicks on a stream or shelved CL and selects the stream_tester option
Slide 15 © u-blox Melbourn Ltd.
Improved workflow
Slide 16 © u-blox Melbourn Ltd.
//stream
Reduced feedback time due to subset execution
Shelved CL
Manages
Jenkins
Build
Build
Build
Tests
Tests
Tests
Build
• Abstracting CI (Jenkins) away from users
• Simple as check particularbuildsor let tool auto decide
• User can now test any stream + test shelved changes
stream_tester
Jenkins + Perforce P4 plugin
• The ability to pre-submit is enabled by Perforce’s native ability to shelve and
unshelve
• Different strategies can be used
• Full sync + user changes
• Incremental sync+ user changes
• revert and reconcile ensures known state where
full sync is not feasible
• Perforce enables intelligent workspace
management, e.g. 200 Jenkins jobs can all share
a single workspace vs default behaviourof a
workspace per job on a single build slave
Slide 17 © u-blox Melbourn Ltd.
Add user changes if needed
unshelve unshelve
sync
sync -f sync @
Prepare
delete all revert+reconsile
P4 Plugin
Full Sync Incremental Sync
Metrics, Data and Reporting
• “You can only improve what you can measure” in a CI system
• Jenkins as a CI doesn’t provide the granularity of measurements we needed
• We wanted to track a change across all builds
• Links back to full changemanagement
• What impact did changeX have ?
• Wanted ability to measure any KPI or metric
Slide 18 © u-blox Melbourn Ltd.
Metrics, Data and Reporting
• stream_tester automatically insert various measure points at relevant stages in the CI
process in Jenkins
• These then get pushed to a SQL database
Slide 19 © u-blox Melbourn Ltd.
Build
Build
Build
Tests
Tests
Tests
Build
Jenkins
Reporting
framework
Reports
• With all the data different teams can now track their KPI or metrics
• Do any level of data mining that is necessary
Slide 20 © u-blox Melbourn Ltd.
Reports: Durations
• The CI team can now track P4 sync times, queue times, IT dependant issues
• Developers can track why their build is taking long for configuration X
Slide 21 © u-blox Melbourn Ltd.
Reports: Metrics
• Since P4 handles every change as incremental CL number , reporting can very
easily indicate the impact on a particular change
Slide 22 © u-blox Melbourn Ltd.
Reports: Status across CL
• Show results of tests in a suite over CL
• Show results of different builds over CL
• Highlights flaky build or tests
Slide 23 © u-blox Melbourn Ltd.
Improved workflow
Slide 24 © u-blox Melbourn Ltd.
//stream
Reduced feedback time due to subset execution
Shelved CL
Manages
Jenkins
Build
Build
Build
Tests
Tests
Tests
Build
stream_tester
Reporting
frameworkReports,detailedchange impactvisibility
Perforce Swarm integration
• Perforce Swarm provides codereview for shelved changes
• stream_tester provides testing for shelved changes
• Framework can provide reports for shelved changes
• These 3 can now be integratedto reduce review time and highlight issues that would have been
difficult to just detect from looking at code changes
• User shelve changesfor review
• User tests shelved changes via stream_tester
• User uses reports to feed back intoswarm
• User re-shelve fixes intosame review if reports indicate failure
• “rinse and repeat”
• Swarm review now combines results+ the necessary code review
Slide 25 © u-blox Melbourn Ltd.
JIRA : Issue tracking integration
• We use JIRA as our agile sprint planning, work definition and defect tracking tool
• Integration into the system allows visibility of JIRA into the CI and workflow
Slide 26 © u-blox Melbourn Ltd.
360 Feedback
• Just getting a PASS or FAIL from a CI system hides potential problems that can cause
major delays when things start to fail
• E.g. Memory usage can slowly creep up until it cannot fit on embeddeddevice
• The reporting framework can track such a metric but unless people actively track the report
a sudden major change could be detected too late
• A notification rule engine is another system we added
• Teams can add rules to notify users, teams, managers etc
• if Memory goes up by more than X MB email Y
• If Memory goes over X contact Y
• If Warnings decrease by X congratulate change user(s)
• If P4 sync time is more than X minutes contact P4 team
• If Metric on stream_A is greater than metric on stream_B
• etc
• Users then get personalized emails straight after a CI action to notify them if any of the
rules matches (for pre-submit and checked in code)
Slide 27 © u-blox Melbourn Ltd.
Workflow : Putting it all together
Slide 28 © u-blox Melbourn Ltd.
//stream
Reduced feedback time dueto subsetexecution
Shelved CL
Manages
Jenkins
Build
Build
Build
Tests
Tests
Tests
Build
stream_tester
Reporting
framework
Reports, detailed change impact visibility
Swarm
360 feedbackEmails
Conclusions
• We now have a very flexible system that allows
• Maximum visibility of any change
• Ability to pre-submit
• Selective build and test if needed
• Simplification of development branch strategies
• Re-use of Perforce enterprise features
• Integration of other systems (Reports, JIRA, SWARM etc)
• Fast feedback to developers
• ContinuousKPI and metric tracking and feedback
• Time that mainline or branch/stream broken to be greatly reduced
• Rapid prototyping
• Improved development velocity of teams
Slide 29 © u-blox Melbourn Ltd.
Jenkins P4 plugin
• Thanks to Paul Allen @ Perforce for continuing improving the Jenkins plugin and
adding my requested features
• Thanks to Sven Erik Knop @ Perforce for inviting me
Slide 30 © u-blox Melbourn Ltd.
Questions ?
Slide 31 © u-blox Melbourn Ltd.

More Related Content

What's hot

Final presentation
Final presentationFinal presentation
Final presentation
wilcbrowning
 

What's hot (20)

Final presentation
Final presentationFinal presentation
Final presentation
 
VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...
VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...
VMworld 2013: Keep it Simple and Integrated - Out-of the Box Cross-System Aut...
 
Ksplice Presentation External
Ksplice Presentation ExternalKsplice Presentation External
Ksplice Presentation External
 
VMworld Europe 2014: Take Virtualization to the Next Level - vSphere with Ope...
VMworld Europe 2014: Take Virtualization to the Next Level - vSphere with Ope...VMworld Europe 2014: Take Virtualization to the Next Level - vSphere with Ope...
VMworld Europe 2014: Take Virtualization to the Next Level - vSphere with Ope...
 
The Best of MMS 2013
The Best of MMS 2013The Best of MMS 2013
The Best of MMS 2013
 
VMworld 2015: Extreme Performance Series - vSphere Compute & Memory
VMworld 2015: Extreme Performance Series - vSphere Compute & MemoryVMworld 2015: Extreme Performance Series - vSphere Compute & Memory
VMworld 2015: Extreme Performance Series - vSphere Compute & Memory
 
VMworld 2015: Take Virtualization to the Next Level vSphere with Operations M...
VMworld 2015: Take Virtualization to the Next Level vSphere with Operations M...VMworld 2015: Take Virtualization to the Next Level vSphere with Operations M...
VMworld 2015: Take Virtualization to the Next Level vSphere with Operations M...
 
VMworld 2015: No App is An Island
VMworld 2015: No App is An IslandVMworld 2015: No App is An Island
VMworld 2015: No App is An Island
 
Microsoft.Virtualization.Technologies Son Vu
Microsoft.Virtualization.Technologies Son VuMicrosoft.Virtualization.Technologies Son Vu
Microsoft.Virtualization.Technologies Son Vu
 
VMworld 2015: Monitoring and Managing Applications with vRealize Operations 6...
VMworld 2015: Monitoring and Managing Applications with vRealize Operations 6...VMworld 2015: Monitoring and Managing Applications with vRealize Operations 6...
VMworld 2015: Monitoring and Managing Applications with vRealize Operations 6...
 
VMworld 2015: Day to Day Automation of VMware Products to Increase Productivi...
VMworld 2015: Day to Day Automation of VMware Products to Increase Productivi...VMworld 2015: Day to Day Automation of VMware Products to Increase Productivi...
VMworld 2015: Day to Day Automation of VMware Products to Increase Productivi...
 
VMworld 2016: The KISS of vRealize Operations!
VMworld 2016: The KISS of vRealize Operations! VMworld 2016: The KISS of vRealize Operations!
VMworld 2016: The KISS of vRealize Operations!
 
OPNFVSummitNov2015-v4
OPNFVSummitNov2015-v4OPNFVSummitNov2015-v4
OPNFVSummitNov2015-v4
 
VMworld 2015: Extreme Performance Series - vCenter Performance Best Practices
VMworld 2015: Extreme Performance Series - vCenter Performance Best PracticesVMworld 2015: Extreme Performance Series - vCenter Performance Best Practices
VMworld 2015: Extreme Performance Series - vCenter Performance Best Practices
 
VMworld 2015: Managing Users: A Deep Dive into VMware User Environment Manager
VMworld 2015: Managing Users: A Deep Dive into VMware User Environment ManagerVMworld 2015: Managing Users: A Deep Dive into VMware User Environment Manager
VMworld 2015: Managing Users: A Deep Dive into VMware User Environment Manager
 
Co je nového v XenDesktop 7.6 a XenApp 7.6
Co je nového v XenDesktop 7.6 a XenApp 7.6 Co je nového v XenDesktop 7.6 a XenApp 7.6
Co je nového v XenDesktop 7.6 a XenApp 7.6
 
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
 
8 pipeline
8 pipeline 8 pipeline
8 pipeline
 
Citrix Desktop Master Class - Unidesk App Layering - Feb 2017
Citrix Desktop Master Class - Unidesk App Layering - Feb 2017Citrix Desktop Master Class - Unidesk App Layering - Feb 2017
Citrix Desktop Master Class - Unidesk App Layering - Feb 2017
 
VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...
VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...
VMworld 2016: Getting Started with PowerShell and PowerCLI for Your VMware En...
 

Viewers also liked

Viewers also liked (18)

Undo tech overview_201410
Undo tech overview_201410Undo tech overview_201410
Undo tech overview_201410
 
Can IGCs stand the test of time?
Can IGCs stand the test of time?Can IGCs stand the test of time?
Can IGCs stand the test of time?
 
Git submodule
Git submoduleGit submodule
Git submodule
 
Making Git Work for the Enterprise Through the Power of Perforce Helix
Making Git Work for the Enterprise Through the Power of Perforce HelixMaking Git Work for the Enterprise Through the Power of Perforce Helix
Making Git Work for the Enterprise Through the Power of Perforce Helix
 
Git Survival Tips: How to Undo and Recover from Your Mistakes
Git Survival Tips: How to Undo and Recover from Your MistakesGit Survival Tips: How to Undo and Recover from Your Mistakes
Git Survival Tips: How to Undo and Recover from Your Mistakes
 
Perfecting Your Development Tools: Updates to the Helix Plugin for Jenkins
Perfecting Your Development Tools: Updates to the Helix Plugin for JenkinsPerfecting Your Development Tools: Updates to the Helix Plugin for Jenkins
Perfecting Your Development Tools: Updates to the Helix Plugin for Jenkins
 
Testing your puppet code
Testing your puppet codeTesting your puppet code
Testing your puppet code
 
Puppet and software delivery
Puppet and software deliveryPuppet and software delivery
Puppet and software delivery
 
Augeas, swiss knife resources for your puppet tree
Augeas, swiss knife resources for your puppet treeAugeas, swiss knife resources for your puppet tree
Augeas, swiss knife resources for your puppet tree
 
An introduction to the Pulp project
An introduction to the Pulp projectAn introduction to the Pulp project
An introduction to the Pulp project
 
Working with multiple git repositories
Working with multiple git repositoriesWorking with multiple git repositories
Working with multiple git repositories
 
Coworking with git
Coworking with gitCoworking with git
Coworking with git
 
RPM experiments
RPM experimentsRPM experiments
RPM experiments
 
DevOps, beyond agile
DevOps, beyond agileDevOps, beyond agile
DevOps, beyond agile
 
The devops approach to monitoring, Open Source and Infrastructure as Code Style
The devops approach to monitoring, Open Source and Infrastructure as Code StyleThe devops approach to monitoring, Open Source and Infrastructure as Code Style
The devops approach to monitoring, Open Source and Infrastructure as Code Style
 
Dive into Puppet 4
Dive into Puppet 4Dive into Puppet 4
Dive into Puppet 4
 
Diving Into Puppet Providers Development: The Puppet-Corosync Module
Diving Into Puppet Providers Development: The Puppet-Corosync ModuleDiving Into Puppet Providers Development: The Puppet-Corosync Module
Diving Into Puppet Providers Development: The Puppet-Corosync Module
 
Foreman in your datacenter
Foreman in your datacenterForeman in your datacenter
Foreman in your datacenter
 

Similar to Perforce on Tour 2015 - Optimising the Developer Pipeline at U-Blox

Advanced engineering practices to achieve higher agility quotient v1.0
Advanced engineering practices to achieve higher agility quotient v1.0Advanced engineering practices to achieve higher agility quotient v1.0
Advanced engineering practices to achieve higher agility quotient v1.0
Musarrath Jabeen
 

Similar to Perforce on Tour 2015 - Optimising the Developer Pipeline at U-Blox (20)

Continuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestContinuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfest
 
Performance Testing in the Agile Lifecycle
Performance Testing in the Agile LifecyclePerformance Testing in the Agile Lifecycle
Performance Testing in the Agile Lifecycle
 
Continuous Performance Testing in DevOps - Lee Barnes
Continuous Performance Testing in DevOps - Lee BarnesContinuous Performance Testing in DevOps - Lee Barnes
Continuous Performance Testing in DevOps - Lee Barnes
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017
 
Deploying at will - SEI
 Deploying at will - SEI Deploying at will - SEI
Deploying at will - SEI
 
Continuous Deployment of your Application - SpringOne Tour Dallas
Continuous Deployment of your Application - SpringOne Tour DallasContinuous Deployment of your Application - SpringOne Tour Dallas
Continuous Deployment of your Application - SpringOne Tour Dallas
 
The Evolution of Continuous Delivery at Scale @ Linkedin
The Evolution of Continuous Delivery at Scale @ LinkedinThe Evolution of Continuous Delivery at Scale @ Linkedin
The Evolution of Continuous Delivery at Scale @ Linkedin
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application Server
 
Webinar: "Continuous Delivery with Jenkins"
Webinar: "Continuous Delivery with Jenkins"Webinar: "Continuous Delivery with Jenkins"
Webinar: "Continuous Delivery with Jenkins"
 
Performance Testing in the Agile Lifecycle
Performance Testing in the Agile LifecyclePerformance Testing in the Agile Lifecycle
Performance Testing in the Agile Lifecycle
 
2016 09-dev opsjourney-devopsdaysoslo
2016 09-dev opsjourney-devopsdaysoslo2016 09-dev opsjourney-devopsdaysoslo
2016 09-dev opsjourney-devopsdaysoslo
 
Quality in a Square. K8s-native Quality Assurance of Microservices with Testkube
Quality in a Square. K8s-native Quality Assurance of Microservices with TestkubeQuality in a Square. K8s-native Quality Assurance of Microservices with Testkube
Quality in a Square. K8s-native Quality Assurance of Microservices with Testkube
 
DevOps adoption in the enterprise
DevOps adoption in the enterpriseDevOps adoption in the enterprise
DevOps adoption in the enterprise
 
QTest - Test management Tool
QTest - Test management ToolQTest - Test management Tool
QTest - Test management Tool
 
Reinventing Performance Testing, CMG imPACt 2016 slides
  Reinventing Performance Testing, CMG imPACt 2016 slides  Reinventing Performance Testing, CMG imPACt 2016 slides
Reinventing Performance Testing, CMG imPACt 2016 slides
 
Ncerc rlmca202 adm m3 ssm
Ncerc rlmca202  adm m3 ssmNcerc rlmca202  adm m3 ssm
Ncerc rlmca202 adm m3 ssm
 
Advanced engineering practices to achieve higher agility quotient v1.0
Advanced engineering practices to achieve higher agility quotient v1.0Advanced engineering practices to achieve higher agility quotient v1.0
Advanced engineering practices to achieve higher agility quotient v1.0
 
Mieke Gevers - Performance Testing in 5 Steps - A Guideline to a Successful L...
Mieke Gevers - Performance Testing in 5 Steps - A Guideline to a Successful L...Mieke Gevers - Performance Testing in 5 Steps - A Guideline to a Successful L...
Mieke Gevers - Performance Testing in 5 Steps - A Guideline to a Successful L...
 
Experience in teaching devops
Experience in teaching devopsExperience in teaching devops
Experience in teaching devops
 

More from Perforce

More from Perforce (20)

How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning Needs
 
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
 
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPs
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development Process
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOps
 
How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog
 
Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team
 
Shift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowShift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New Workflow
 
Hybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldHybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated World
 
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterpriseBetter, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
 
Easier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMEasier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALM
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog
 
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
 
How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure
 
Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2
 
Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?
 
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
 
What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4
 
Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison
 

Recently uploaded

Recently uploaded (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Perforce on Tour 2015 - Optimising the Developer Pipeline at U-Blox

  • 1. locate, communicate, accelerate Optimising the Developer Pipeline: Deliver Faster & Better Perforce, Jenkins and pre-submit Morné Joubert September 2015
  • 2. Content Slide 2 © u-blox Melbourn Ltd. • Brief info about u-blox • Our environment • Our challenges • Our solution • stream_tester • Perforce • Jenkins • Pre-submit
  • 3. u-blox at a glance • Swiss semiconductor company • Founded in 1997 • Listed on the SIX Swiss Exchange since 2007 (SIX:UBXN) • Core competencies • Cellular communications technologies • Short range radio technologies • Satellite based positioning technologies • Product offering • Integrated circuits – the foundation of our solutions • Modules – fully implemented, drop-in solutions • Services – delivering added value to our solutions • Market focus • Automotive – robust, automotive grade products • Industrial – durable components for professional electronics • Consumer – mass market ICs and modules • Business model • Fabless operation • Commercial, off-the-shelf products Slide 3 © u-blox Melbourn Ltd.
  • 4. Global market leaders rely on u-blox ConsumerIndustrialAutomotive Slide 4 © u-blox Melbourn Ltd.
  • 5. Engineering Environment • Toolchains are COTS and bespoke • Different teams on different tool chain versions • Execution and test platforms • PC platforms • Simulators • FPGA platforms • chip / modules • Live air Slide 5 © u-blox Melbourn Ltd.
  • 6. Perforce sites Slide 6 © u-blox Melbourn Ltd. SanDiego Lahore Cork Melbourn Leuven Sgonico Thalwil
  • 7. Resource restrictions • Developing and testing Cellular and wireless products not cheap • Limited resource availability • Physical numbers of devices • Test kit £500k+ • Compilers £5k each Slide 7 © u-blox Melbourn Ltd.
  • 8. Challenge for Continuous Integration • Integration tests can take a long time • Each test potentially measured in minutes • Full system test sweep could take days • Cannot afford the luxury of running all tests on submission • Queue and resource management is an issue • Builds and test can sit in the CI queue for a long time • Cannot afford the luxury of running all builds on submission Slide 8 © u-blox Melbourn Ltd.
  • 9. Continuous Integration : our take • All about change management • Any change should be visible in workflow • Code changes • Tool and compiler changes • Test inputs • OS changes • Any change should be able to be tested before commit • Version everything • CI is built on trust • “cry wolf syndrome” • Developers need to part of solution • Fast feedback is not a “nice to have” , it is a requirement Slide 9 © u-blox Melbourn Ltd.
  • 10. Default workflow Slide 10 © u-blox Melbourn Ltd. TriggerCheck in Jenkins Build Build Build Tests Tests Tests Build Feedback Submitchange to stream Change detected by Jenkins Set of pre-definedjobs are executed Change validationafter all itemsexecuted
  • 11. Providing pre-submit functionality • User should be able to pre-submit any change to see what effect the change could have • pre-submit change could be • Copy up/Promoting changes to mainline streams • Prototyping new compiler • Specific fix for a particular failure • Jenkins doesn’t providepre-submit framework Slide 11 © u-blox Melbourn Ltd.
  • 12. Providing selective Jenkins execution • Scenario • Test #85 of 100 fails , suite duration 1 hour, #85 duration 5 minutes • User wants to test fix to failure by first just re-running failed test • Scenario • Build fails only on a particular platform variant • User want to test fix on only the failed build • Scenario • Build in a pipeline fails • User just wants to test downstream build, not whole chain • Scenario • Test seems to only fail on a particular slave connected to particular HW • User wants to re-run test on that slave only Slide 12 © u-blox Melbourn Ltd.
  • 13. Solution: stream_tester • To pre-submit and specify specific job items in Jenkins an internal client application was developed called “stream_tester” Slide 13 © u-blox Melbourn Ltd. Ability to select individual jobs Ability to select partsof chain Viewkey indicators Including P4 CLnumbers Groupjobsinto tabs Specific test or parameterscanbe modified
  • 14. Integration into P4V Slide 14 © u-blox Melbourn Ltd. • Don’t want to give users yet another system to use • Easy option was just to add it as a plugin to P4V
  • 15. Integration into P4V • User clicks on a stream or shelved CL and selects the stream_tester option Slide 15 © u-blox Melbourn Ltd.
  • 16. Improved workflow Slide 16 © u-blox Melbourn Ltd. //stream Reduced feedback time due to subset execution Shelved CL Manages Jenkins Build Build Build Tests Tests Tests Build • Abstracting CI (Jenkins) away from users • Simple as check particularbuildsor let tool auto decide • User can now test any stream + test shelved changes stream_tester
  • 17. Jenkins + Perforce P4 plugin • The ability to pre-submit is enabled by Perforce’s native ability to shelve and unshelve • Different strategies can be used • Full sync + user changes • Incremental sync+ user changes • revert and reconcile ensures known state where full sync is not feasible • Perforce enables intelligent workspace management, e.g. 200 Jenkins jobs can all share a single workspace vs default behaviourof a workspace per job on a single build slave Slide 17 © u-blox Melbourn Ltd. Add user changes if needed unshelve unshelve sync sync -f sync @ Prepare delete all revert+reconsile P4 Plugin Full Sync Incremental Sync
  • 18. Metrics, Data and Reporting • “You can only improve what you can measure” in a CI system • Jenkins as a CI doesn’t provide the granularity of measurements we needed • We wanted to track a change across all builds • Links back to full changemanagement • What impact did changeX have ? • Wanted ability to measure any KPI or metric Slide 18 © u-blox Melbourn Ltd.
  • 19. Metrics, Data and Reporting • stream_tester automatically insert various measure points at relevant stages in the CI process in Jenkins • These then get pushed to a SQL database Slide 19 © u-blox Melbourn Ltd. Build Build Build Tests Tests Tests Build Jenkins Reporting framework
  • 20. Reports • With all the data different teams can now track their KPI or metrics • Do any level of data mining that is necessary Slide 20 © u-blox Melbourn Ltd.
  • 21. Reports: Durations • The CI team can now track P4 sync times, queue times, IT dependant issues • Developers can track why their build is taking long for configuration X Slide 21 © u-blox Melbourn Ltd.
  • 22. Reports: Metrics • Since P4 handles every change as incremental CL number , reporting can very easily indicate the impact on a particular change Slide 22 © u-blox Melbourn Ltd.
  • 23. Reports: Status across CL • Show results of tests in a suite over CL • Show results of different builds over CL • Highlights flaky build or tests Slide 23 © u-blox Melbourn Ltd.
  • 24. Improved workflow Slide 24 © u-blox Melbourn Ltd. //stream Reduced feedback time due to subset execution Shelved CL Manages Jenkins Build Build Build Tests Tests Tests Build stream_tester Reporting frameworkReports,detailedchange impactvisibility
  • 25. Perforce Swarm integration • Perforce Swarm provides codereview for shelved changes • stream_tester provides testing for shelved changes • Framework can provide reports for shelved changes • These 3 can now be integratedto reduce review time and highlight issues that would have been difficult to just detect from looking at code changes • User shelve changesfor review • User tests shelved changes via stream_tester • User uses reports to feed back intoswarm • User re-shelve fixes intosame review if reports indicate failure • “rinse and repeat” • Swarm review now combines results+ the necessary code review Slide 25 © u-blox Melbourn Ltd.
  • 26. JIRA : Issue tracking integration • We use JIRA as our agile sprint planning, work definition and defect tracking tool • Integration into the system allows visibility of JIRA into the CI and workflow Slide 26 © u-blox Melbourn Ltd.
  • 27. 360 Feedback • Just getting a PASS or FAIL from a CI system hides potential problems that can cause major delays when things start to fail • E.g. Memory usage can slowly creep up until it cannot fit on embeddeddevice • The reporting framework can track such a metric but unless people actively track the report a sudden major change could be detected too late • A notification rule engine is another system we added • Teams can add rules to notify users, teams, managers etc • if Memory goes up by more than X MB email Y • If Memory goes over X contact Y • If Warnings decrease by X congratulate change user(s) • If P4 sync time is more than X minutes contact P4 team • If Metric on stream_A is greater than metric on stream_B • etc • Users then get personalized emails straight after a CI action to notify them if any of the rules matches (for pre-submit and checked in code) Slide 27 © u-blox Melbourn Ltd.
  • 28. Workflow : Putting it all together Slide 28 © u-blox Melbourn Ltd. //stream Reduced feedback time dueto subsetexecution Shelved CL Manages Jenkins Build Build Build Tests Tests Tests Build stream_tester Reporting framework Reports, detailed change impact visibility Swarm 360 feedbackEmails
  • 29. Conclusions • We now have a very flexible system that allows • Maximum visibility of any change • Ability to pre-submit • Selective build and test if needed • Simplification of development branch strategies • Re-use of Perforce enterprise features • Integration of other systems (Reports, JIRA, SWARM etc) • Fast feedback to developers • ContinuousKPI and metric tracking and feedback • Time that mainline or branch/stream broken to be greatly reduced • Rapid prototyping • Improved development velocity of teams Slide 29 © u-blox Melbourn Ltd.
  • 30. Jenkins P4 plugin • Thanks to Paul Allen @ Perforce for continuing improving the Jenkins plugin and adding my requested features • Thanks to Sven Erik Knop @ Perforce for inviting me Slide 30 © u-blox Melbourn Ltd.
  • 31. Questions ? Slide 31 © u-blox Melbourn Ltd.