Continuous image building and validation

Registered by Paul Larson

Continuously build and automatically test Linaro Evaluation Builds, using the appropriate frameworks for the image (Ubuntu-based, Android-based, ...) creating new tools where necessary.

Offspring, and the android build service take care of the image building, but we need to process these images and ensure they are tested appropriately. Currently, we periodically scan for new images, and test the latest. Moving to an event based system would be more efficient, and reduce duplication (if that, indeed, is something we want?) I think most of the work here centers around:
1. Creating a LAVA driver, which would accept "events" from external systems such as the android builder, offspring, or jenkins
2. Defining rules that the driver would use to process the events it receives. For instance:
 - A new nano image has built: schedule a regression test on each target board that can run the nano image
3. Make sure that producers can send these events upon completion of successful builds
4. Prerequisite is that the scheduler exists, and can allow jobs to be scheduled by the driver through API

How should events be communicated to the driver? (xmlrpc?)

Blueprint information

Status:
Complete
Approver:
Paul Larson
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
Obsolete
Series goal:
None
Implementation:
Not started
Milestone target:
None
Completed by
Andy Doan

Related branches

Sprints

Whiteboard

[doanac, 2012-11-29]: this is largely handled between ci.linaro.org and lava now

User Stories:
1. As a platform developer, I would like to have offspring notify lava when a new image build is available so that automated testing can begin.

Driver app (or scheduler directly) should have an API that allows submission of build artifacts, with metadata such as url and build_id specified. Someone would also need to modify the build system to support calling this API when a build succeeds.

Could the build system just call scheduler API to schedule the job directly? If so, none of this is really even needed, but could add a bit of extra work on the build system side, rather than having it just send an event.

Currently, we are doing continuous image testing by running a job regularly that finds the latest things to test, and starts testing on them.

2. As an android developer, I would like the android build system to notify lava of new android images, so that automated testing can be performed on it.

See above.

3. As a developer, I would like to define rules so that when lava is notified of a new build artifact, tests I define will be executed on it.

Decision from UDS was that the "rules" should probably actually just be python code checked into the driver (or this piece of the scheduler) that defines how to deal with events of various types.

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.