SlideShare a Scribd company logo
1 of 17
Download to read offline
Tue-4-Mar, 10:05am, F.Boudra, M.Wasilewski
LCA14-203: Intro to CI@Linaro 1 of 3
Hour 1
● QA Services will introduce you to existing Linaro Test Plans
● Builds and Baselines will provide an overview to our build system, how
to create, manage and close out a build and how to submit the build
artifacts to LAVA for a test on lab hardware.
Hour 2
● LAVA will describe the process of adding new test capabilities (New
Platforms and/or New external test equipment)
● QA Services will overview how they use LAVA for tests
Hour 3
● LAVA will show you new features to improve test result filtering and
Visualization in LAVA
● QA Services will show you how Linaro rolls all the Build results, Test
Results (Manual / LAVA) into our test reports
Intro to CI @ Linaro
• Engineering builds
• Android
• OpenEmbedded
• Ubuntu
• LSK
• Working groups
• LEG
• LNG
• Requesting new Test Plan
• Contact QA team (Milosz Wasilewski)
• File REQ card
• Creating new test plans will be covered on Thursday session
Existing Test Plans
• Some test plans are not public (like LSK)
• Sharing to selected people isn’t easy as it implies google
account
• Turning ‘paper’ test plan into JSON test definition is
done manually by editing Jenkins configs
Existing Test Plans - problems
• Jenkins as the build system
• android-build.linaro.org for Android builds
• ci.linaro.org for everything else
• individual components
• acpica, libvirt QEMU, UEFI, etc...
• Ubuntu and OpenEmbedded based engineering builds
• hardware packs, rootfs, pre-built images
• Kernel CI
• mainline, ARM SoC (for-next), linux-next, linux-stable
• LSK, Linux Linaro, LEG, LNG
• LAVA as the automated testing system
• validation.linaro.org, Linaro’s production server
• running LAVA jobs on Cambridge lab hardware, restricted to Linaro
• community.validation.linaro.org, Linaro’s Community server
• running LAVA jobs on community hardware, open to everybody
Anatomy of CI loop
• Select a view
• Click “New job” button
• the new job is created on the selected view
How to create a build job
• Define a job name
• avoid names with spaces, it’s used in the URL
• Select the build job type
• free-style project
• Multijob project
• Multi-configuration project
• Copy an existing job
How to create a build job
• Configure the general options
• discard old builds
• days to keep build
• max number of builds to keep
• enabled project based security
• users/groups from login.linaro.org and “anonymous” account
• permissions: configure, read, extended read, build, worskpace
• this build is parametrized
• file parameter (properties), password parameter
• restrict where this project can be run
• label expression
• various builders (ephemeral vs persistent, regular user vs sudoer)
• Amazon EC2 instances
• VPS instances
• native builders
How to create a build job
• Configure the advanced project options
• use custom workspace (useful for multi-configuration project)
• directory for sub-builds “.”
• Configure source code management
• git plugin
• repository URL
• advanced -> refspec
• branch specifier
• additional behavior
• advanced clone behaviours -> shallow clone
• check out to a sub-directory
• clean after checkout
• wipe out repository and force clone
How to create a build job
• Configure build triggers
• trigger builds remotely (e.g. git hook)
• build periodically (cron syntax)
• gerrit event
• URL trigger (useful in particular use cases)
• polling, should be run on persistent slave!
• Configure configuration matrix (only for multi-
configuration project)
• add axis
• dynamic axis (e.g. defconfig list)
• slaves
• user-defined (e.g. custom string for gcc version, rootfs, etc...)
• run each configuration sequentially
• execute touchstones build first
How to create a build job
• Configure build environment
• abort the build if it’s stuck
• add timestamps to the console output
• copy files into the job’s workspace (e.g. Linaro GCC toolchain)
• set build name (e.g. GIT_REVISION, require to use git plugin)
• tie parent to a build node (only for multi-configuration)
• Configure build - 1/3
• “execute shell”
• run shell script, written inline or pulled from SCM
• can use regular git cli instead of Jenkins git plugin
• some environment variables are defined by Jenkins (axis too)
• can use Linaro CI build tools to build kernels
• can use Linaro jenkins setup scripts to build OpenEmbedded images
• generate configuration(s) to submit LAVA job (post-build-lava CI helper)
• generate BUILD-INFO.txt (required for publishing on snapshots)
• define ACLs
How to create a build job
• Configure build - 2/3
• “send files or execute command over ssh” to publish build artifacts on
snapshots.linaro.org
• it’s a two step process, transfer files then move files
• SSH server: snapshots.linaro.org
■ define “source files”
■ define “remote directory”: ${JOB_NAME}
/${BUILD_NUMBER}/path/to/artifact
• add server -> SSH server: snapshots.linaro.org file-move
■ exec command: “reshuffle-files --job-type prebuilt --job-
name ${JOB_NAME} --build-num ${BUILD_NUMBER}”
• advanced -> select “always SSH from master”
How to create a build job
• Configure build - 3/3
• trigger/call builds on other projects
• ubuntu-builder, CI helper used to cross build debian packages
• ubuntu-builder-native, CI helper used to build naively debian packages
• post-build-repo, CI helper used to upload packages to Linaro repository
• post-build-lava, CI helper used to submit a LAVA job (JSON job
definition)
• support fully custom job definition (CUSTOM_JSON_URL)
• support pre-built image (IMAGE_URL)
• support custom linaro_deploy_image parameters
(DEPLOY_IMAGE_PARAMETERS_URL)
• support custom metadata (METADATA_URL)
• support custom boot image parameters
(BOOT_IMAGE_PARAMETERS_URL)
• partial support for multi-node jobs
How to create a build job
• Configure post-build actions
• scan for compiler warnings (GCC, LLVM, doxygen, etc...)
• groovy postbuild
• powerful groovy scripting, access to Jenkins API (e.g. used to add a
direct link to LAVA job id, or rename a build job dynamically)
• Jenkins text finder (use regexp to find pattern)
• e-mail notification
How to create a build job
• Improve the publishing API
• Get latest rootfs/hwpack using API
• Support Jenkins CLI
• Jenkins job descriptions in human readable format,
maintained under SCM (Jenkins job builder)
Improvements
Any Questions?
Q&A
More about Linaro Connect: http://connect.linaro.org
More about Linaro: http://www.linaro.org/about/
More about Linaro engineering: http://www.linaro.org/engineering/
Linaro members: www.linaro.org/members

More Related Content

More from Linaro

HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
Linaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
Linaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
Linaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
Linaro
 
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
Linaro
 
HKG18-317 - Arm Server Ready Program
HKG18-317 - Arm Server Ready ProgramHKG18-317 - Arm Server Ready Program
HKG18-317 - Arm Server Ready Program
Linaro
 
HKG18-312 - CMSIS-NN
HKG18-312 - CMSIS-NNHKG18-312 - CMSIS-NN
HKG18-312 - CMSIS-NN
Linaro
 
HKG18-301 - Dramatically Accelerate 96Board Software via an FPGA with Integra...
HKG18-301 - Dramatically Accelerate 96Board Software via an FPGA with Integra...HKG18-301 - Dramatically Accelerate 96Board Software via an FPGA with Integra...
HKG18-301 - Dramatically Accelerate 96Board Software via an FPGA with Integra...
Linaro
 
HKG18-300K2 - Keynote: Tomas Evensen - All Programmable SoCs? – Platforms to ...
HKG18-300K2 - Keynote: Tomas Evensen - All Programmable SoCs? – Platforms to ...HKG18-300K2 - Keynote: Tomas Evensen - All Programmable SoCs? – Platforms to ...
HKG18-300K2 - Keynote: Tomas Evensen - All Programmable SoCs? – Platforms to ...
Linaro
 

More from Linaro (20)

HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
 
HKG18-317 - Arm Server Ready Program
HKG18-317 - Arm Server Ready ProgramHKG18-317 - Arm Server Ready Program
HKG18-317 - Arm Server Ready Program
 
HKG18-312 - CMSIS-NN
HKG18-312 - CMSIS-NNHKG18-312 - CMSIS-NN
HKG18-312 - CMSIS-NN
 
HKG18-301 - Dramatically Accelerate 96Board Software via an FPGA with Integra...
HKG18-301 - Dramatically Accelerate 96Board Software via an FPGA with Integra...HKG18-301 - Dramatically Accelerate 96Board Software via an FPGA with Integra...
HKG18-301 - Dramatically Accelerate 96Board Software via an FPGA with Integra...
 
HKG18-300K2 - Keynote: Tomas Evensen - All Programmable SoCs? – Platforms to ...
HKG18-300K2 - Keynote: Tomas Evensen - All Programmable SoCs? – Platforms to ...HKG18-300K2 - Keynote: Tomas Evensen - All Programmable SoCs? – Platforms to ...
HKG18-300K2 - Keynote: Tomas Evensen - All Programmable SoCs? – Platforms to ...
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 

LCA14: LCA14-203: Introduction to CI @ Linaro 1of 3

  • 1. Tue-4-Mar, 10:05am, F.Boudra, M.Wasilewski LCA14-203: Intro to CI@Linaro 1 of 3
  • 2. Hour 1 ● QA Services will introduce you to existing Linaro Test Plans ● Builds and Baselines will provide an overview to our build system, how to create, manage and close out a build and how to submit the build artifacts to LAVA for a test on lab hardware. Hour 2 ● LAVA will describe the process of adding new test capabilities (New Platforms and/or New external test equipment) ● QA Services will overview how they use LAVA for tests Hour 3 ● LAVA will show you new features to improve test result filtering and Visualization in LAVA ● QA Services will show you how Linaro rolls all the Build results, Test Results (Manual / LAVA) into our test reports Intro to CI @ Linaro
  • 3. • Engineering builds • Android • OpenEmbedded • Ubuntu • LSK • Working groups • LEG • LNG • Requesting new Test Plan • Contact QA team (Milosz Wasilewski) • File REQ card • Creating new test plans will be covered on Thursday session Existing Test Plans
  • 4. • Some test plans are not public (like LSK) • Sharing to selected people isn’t easy as it implies google account • Turning ‘paper’ test plan into JSON test definition is done manually by editing Jenkins configs Existing Test Plans - problems
  • 5. • Jenkins as the build system • android-build.linaro.org for Android builds • ci.linaro.org for everything else • individual components • acpica, libvirt QEMU, UEFI, etc... • Ubuntu and OpenEmbedded based engineering builds • hardware packs, rootfs, pre-built images • Kernel CI • mainline, ARM SoC (for-next), linux-next, linux-stable • LSK, Linux Linaro, LEG, LNG • LAVA as the automated testing system • validation.linaro.org, Linaro’s production server • running LAVA jobs on Cambridge lab hardware, restricted to Linaro • community.validation.linaro.org, Linaro’s Community server • running LAVA jobs on community hardware, open to everybody Anatomy of CI loop
  • 6. • Select a view • Click “New job” button • the new job is created on the selected view How to create a build job
  • 7. • Define a job name • avoid names with spaces, it’s used in the URL • Select the build job type • free-style project • Multijob project • Multi-configuration project • Copy an existing job How to create a build job
  • 8. • Configure the general options • discard old builds • days to keep build • max number of builds to keep • enabled project based security • users/groups from login.linaro.org and “anonymous” account • permissions: configure, read, extended read, build, worskpace • this build is parametrized • file parameter (properties), password parameter • restrict where this project can be run • label expression • various builders (ephemeral vs persistent, regular user vs sudoer) • Amazon EC2 instances • VPS instances • native builders How to create a build job
  • 9. • Configure the advanced project options • use custom workspace (useful for multi-configuration project) • directory for sub-builds “.” • Configure source code management • git plugin • repository URL • advanced -> refspec • branch specifier • additional behavior • advanced clone behaviours -> shallow clone • check out to a sub-directory • clean after checkout • wipe out repository and force clone How to create a build job
  • 10. • Configure build triggers • trigger builds remotely (e.g. git hook) • build periodically (cron syntax) • gerrit event • URL trigger (useful in particular use cases) • polling, should be run on persistent slave! • Configure configuration matrix (only for multi- configuration project) • add axis • dynamic axis (e.g. defconfig list) • slaves • user-defined (e.g. custom string for gcc version, rootfs, etc...) • run each configuration sequentially • execute touchstones build first How to create a build job
  • 11. • Configure build environment • abort the build if it’s stuck • add timestamps to the console output • copy files into the job’s workspace (e.g. Linaro GCC toolchain) • set build name (e.g. GIT_REVISION, require to use git plugin) • tie parent to a build node (only for multi-configuration) • Configure build - 1/3 • “execute shell” • run shell script, written inline or pulled from SCM • can use regular git cli instead of Jenkins git plugin • some environment variables are defined by Jenkins (axis too) • can use Linaro CI build tools to build kernels • can use Linaro jenkins setup scripts to build OpenEmbedded images • generate configuration(s) to submit LAVA job (post-build-lava CI helper) • generate BUILD-INFO.txt (required for publishing on snapshots) • define ACLs How to create a build job
  • 12. • Configure build - 2/3 • “send files or execute command over ssh” to publish build artifacts on snapshots.linaro.org • it’s a two step process, transfer files then move files • SSH server: snapshots.linaro.org ■ define “source files” ■ define “remote directory”: ${JOB_NAME} /${BUILD_NUMBER}/path/to/artifact • add server -> SSH server: snapshots.linaro.org file-move ■ exec command: “reshuffle-files --job-type prebuilt --job- name ${JOB_NAME} --build-num ${BUILD_NUMBER}” • advanced -> select “always SSH from master” How to create a build job
  • 13. • Configure build - 3/3 • trigger/call builds on other projects • ubuntu-builder, CI helper used to cross build debian packages • ubuntu-builder-native, CI helper used to build naively debian packages • post-build-repo, CI helper used to upload packages to Linaro repository • post-build-lava, CI helper used to submit a LAVA job (JSON job definition) • support fully custom job definition (CUSTOM_JSON_URL) • support pre-built image (IMAGE_URL) • support custom linaro_deploy_image parameters (DEPLOY_IMAGE_PARAMETERS_URL) • support custom metadata (METADATA_URL) • support custom boot image parameters (BOOT_IMAGE_PARAMETERS_URL) • partial support for multi-node jobs How to create a build job
  • 14. • Configure post-build actions • scan for compiler warnings (GCC, LLVM, doxygen, etc...) • groovy postbuild • powerful groovy scripting, access to Jenkins API (e.g. used to add a direct link to LAVA job id, or rename a build job dynamically) • Jenkins text finder (use regexp to find pattern) • e-mail notification How to create a build job
  • 15. • Improve the publishing API • Get latest rootfs/hwpack using API • Support Jenkins CLI • Jenkins job descriptions in human readable format, maintained under SCM (Jenkins job builder) Improvements
  • 17. More about Linaro Connect: http://connect.linaro.org More about Linaro: http://www.linaro.org/about/ More about Linaro engineering: http://www.linaro.org/engineering/ Linaro members: www.linaro.org/members