Deploy stage manually on master, unit test build time technologies (was: Re: Excessive tests in Ruqola [...])

"Friedrich W. H. Kossebau" <[email protected]> Thu, 16 Jul 2026 15:47:23 +0200
Newsgroups gmane.comp.kde.devel.core,gmane.comp.kde.devel.general
Organization KDE
Message-ID <[email protected]>
Hi all,

Am Donnerstag, 16. Juli 2026, 13:35:05 Mitteleurop=C3=A4ische Sommerzeit sc=
hrieb=20
Ben Cooksley:
> Over the past week or two Sysadmin has received a number of complaints
> regarding a lack of CI builder availability, primarily from those who work
> on Plasma. Investigation has revealed that Ruqola appears to use a
> disproportionately high amount of CI time compared to the size of the
> project and it's activity.
>=20
> This appears to be driven by the fact that Ruqola has a large number of
> tests that do not take very long to execute (700 or so tests, yet done in=
=20
6
> minutes - with many of these being less than 1 second to run). Given that
> every single one of these unit tests needs to have automoc / compiler /
> linker run on it i'd suggest that similar tests be merged into the same
> compilation unit (you can run the individual tests, but keep similar tests
> together in the same unit test). This would also explain why the build=20
time
> on Windows is significantly longer, as NTFS does not perform well when
> compared to Linux file systems, even on NVMe storage.

DEPLOY STAGE "TESTS"

When it comes to "Excessive tests" could we please also consider to make fo=
r=20
master/development/MR branches the "Deploy" stage on-demand, instead of=20
always running it together with the "Build" stage? That would scale across=
=20
all apps. And by my rough estimate by some samples I looked at save half of=
=20
those projects' CI time. And most activity happens on master/development/MR=
=20
branches, so this would scale even more.
=46or release branches always running the deploy stage seem reasonable, the=
re=20
one wants to properly check everything as early as possible for regressions.

=46rom what I understand, those package builds (on master/development/MR=20
branches) are just done to test if packaging still works. So a plain test=20
run, just on package level. Taking roughly the full time of the normal=20
build. Sometimes even (much) longer, despite not building also normal (unit=
)=20
tests and running them.

I very doubt that the resulting package artifacts on those branches are=20
actually used by anyone on a regular basis. There is no official CD also, i=
s=20
there? (Nothing related spotted on apps.kde.org or heard about). So it seem=
s=20
just a "does it package" test. With massive resource usage tag, outnumberin=
g=20
any normal unit tests.

So could we please reduce the test package/deploy builds on master?
Make them manually activateable only, and perhaps have them run=20
automatically only as part of the weekly "Albert" run? Or as part of some=20
nightly CD system at some point?

Again, not done the full numbers, but my gut feeling from those samples I=20
saw is that this will have a noticeable effect on CI resource uages.


TESTS RUN ONLY ON ONE PLATFORM

Disabling the unit tests on some platforms runs the risk to not cover=20
characteristics of that platform, BTW. Not ideal, is it. Ruining some=20
purpose of a CI.


TECHNOLOGIES WANTED FOR REDUCING UNIT TEST BUILD TIME

Enabling some kind of unity build for tests might be something nice to have=
=20
also IMHO. Because there cannot be enough tests usually, and Ruqola seems i=
n=20
a very healthy state here when it comes to coverage, at least by the number=
=20
of unit tests. Just exposing that way some badly scaling costs.

Personally would be interested into any technologies/approaches to merge=20
builds of unit tests, without affecting the actual test setups. By my pet=20
example Okteta, building the unit tests takes rougly half or more of the=20
time of building the actual product artifacts. A pain. And I would like to=
=20
have more tests there actually :)

Those into the Qt development world, would you know any related approaches,=
=20
when it comes to Qt testing frameworks? I'd be interested to explore this=20
actively together with others.

Cheers
=46riedrich