Continuous Integration and Testing of a Yocto Project Based Automotive Head Unit
summary
Continuous integration for a Yocto-based BMW head unit uses Jenkins, bitbake and a custom SDK pipeline with multistage CI that runs component builds in SDKs, full system builds in Ubuntu 14.04 containers, and on-target tests via a test farm of roughly 16 SDK, 20 virtual and 12 real executors. The meta-layer set is large (60+ layers, ~2,800 recipes) so builds vary from ~20 minutes to ~5 hours; shared sstate causes racey, non-reproducible failures and needs mitigation (shared sstate races). Optimizations include CCache, sstate mirroring, Performance Co-Pilot profiling and resource-aware parallelization scripts; the system works but requires heavy ops and recipe-quality work.
AI-written summary · about
chapters (19)
- 0:00Introduction to BMW RIT
- 1:12CI system requirements
- 2:29Yocto project overview
- 4:34Source code management
- 7:06Gerrit code review process
- 8:53CI pipeline stages
- 11:36System release process
- 13:06Infrastructure and testing
- 14:48Lessons learned in CI
- 16:14Build optimization
- 18:46Yocto build configuration
- 20:41Custom SDK approach
- 23:05Package distribution
- 23:35Yocto challenges
- 26:46Build statistics
- 28:31Performance tuning
- 33:03Quality and security
- 34:17Yocto conclusions
- 35:34Questions and answers
related talks
37mAutomated Testing and Continuous Integration/Delivery: Lessons Learned
40mI heart the Yocto Project
48mLiving on Master: Using Yocto Project, Jenkins and LAVA for a Rolling Release
42mYocto Project Autobuilders and the SWAT Team
38mkernel: build system outputs and workflows (and how to balance them)
50mBuilding a Custom Embedded Linux Distribution
01h 01mThe Qt Continuous Integration System
50mUsing the Yocto Autobuilder for Build and Release Management
