[Development] Suggestion for new CI: "early warning" for qt5.git

joao.abecasis at nokia.com joao.abecasis at nokia.com
Fri Jan 27 10:01:11 CET 2012


+1

I like this idea. It would allow you to both test a change before integrating and check if preventive changes (whenever possible) already applied in upstream modules are working as expected.

Since this would effectively offer another commonly requested feature (namely, a dry run of the CI) it would be best if there was also a way to test a change in a single module.

Perhaps these could work simply as non-integrating branches, with tighter control over staging, as you wouldn't want unrelated changes undermining yours; our this to be used/advocated for every single change.

My 50 øre.


João
On 27/01/2012 9:12 Hansen Kent (Nokia-MP/Oslo) wrote:
Hi,
Sometimes there are changes to qtbase that the author and/or reviewers 
strongly suspect will break one or more modules on top of it (e.g. in 
qt5.git). For example, source-incompatible changes (removing 
QEventLoop::DeferredDeletion), or changes to the meta-type/QObject 
internals (which qtdeclarative is relying heavily on).

When such a change goes into qtbase, you only get the failure for the 
dependent modules the next time you stage something (anything) in that 
other module; suddenly the module no longer builds, or tests seemingly 
unrelated to the developer's own change start failing.

This means developers will be scratching their heads and spending time 
tracking down what was the actual cause of the failure (first in their 
own changes/module, then in the dependencies). It also means that the CI 
is wasting cycles on subsequent (failed) attempts to fix the failure, 
which is disruptive to everyone trying to stage new and unrelated 
changes. If there is no quick fix, the last resort is to "pin" one or 
more of the dependencies' to a particular SHA1 (e.g. from the qt5.git 
submodule) in the sync.profile until the issue has been resolved, then 
"unpin" it again later.

An idea to avoid such disruption would be a CI where you can try to 
merge your change, and it will build all of qt5.git with it (_and_ run 
all the module's tests). This could be a separate button in Gerrit, for 
example.

You then get a report in Gerrit with the status from the complete build 
& tests run. Even if everything succeeds, the change will not actually 
be integrated; this would just be a tool for getting an indication of 
potential inter-module problems with your patch. If there are problems, 
the developer can then either fix the affected modules in advance if 
possible, or at least give a heads-up and/or prepare patches that will 
fix the upcoming breakage in the other modules.

What do you think?

Best regards,
Kent
_______________________________________________
Development mailing list
Development at qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


More information about the Development mailing list