Just to provide a high level overview of the ideas and proposals
coming from different sources for the requirements for testing and
validation of builds:

* Have terraform files for the testing infrastructure. Infrastructure
as code (IaC). Minus not emulated / nor cloud based, embedded
hardware. ("single command" replication of the testing infrastructure,
no manual steps).

* CI software based on Jenkins, unless someone thinks there's a better
alternative.

* Use autoscaling groups and improve staggered build + test steps to
achieve higher parallelism and shorter feedback times.

* Switch to a branching model based on stable master + integration
branch. PRs are merged into dev/integration which runs extended
nightly tests, which are
then merged into master, preferably in an automated way after
successful extended testing.
Master is always tested, and always buildable. Release branches or
tags in master as usual for releases.

* Build + test feedback time targeting less than 15 minutes.
(Currently a build in a 16x core takes 7m). This involves lot of
refactoring of tests, move expensive tests / big smoke tests to
nightlies on the integration branch, also tests on IoT devices / power
and performance regressions...

* Add code coverage and other quality metrics.

* Eliminate warnings and treat warnings as errors. We have spent time
tracking down "undefined behaviour" bugs that could have been caught
by compiler warnings.

Is there something I'm missing or additional things that come to your
mind that you would wish to add?

Pedro.

Reply via email to