[Development] New features in CI

Ville Voutilainen ville.voutilainen at gmail.com
Mon Mar 1 19:42:11 CET 2021


On Mon, 1 Mar 2021 at 15:31, Lars Knoll <lars.knoll at qt.io> wrote:
> To fix this, we have now added a new feature (called parallel staging branches), where CI rounds are not serialised anymore. Instead, COIN will start a new CI run 15 minutes after a change (or a set of changes) got staged. It will start that run independently of whether another CI run is currently happening. If a staging branch passes, all the changes contained in that branch will be merged into the target branch (can be a fast-forward merge). If the merge produces a conflict, the staging branch will get rejected even if it passed CI.
>
> This means that COIN will usually only test changes that are being staged together. The advantages are that you can more easily pin down a change that caused a CI failure, and that your changes will not get rejected because a buggy change got staged in the same CI run (at least it’s a lot less likely).
>
> The one drawback is that we can in some rare cases end up with a repository in a state where two staging branches passed CI and didn’t conflict when merging them, but the merged state does not pass CI anymore for some reason.
>
> In that case the branch will be blocked until someone stages a fix for the problem. But we do expect this to happen rather seldom, so I do believe that the benefits far outweigh the drawback.
>
> For now this feature is only enabled in qtbase/dev, but if it works out well, we will most likely enable it for further repositories and branches.

Hallelujah.


More information about the Development mailing list