Future of Android binary factory builds

Aleix Pol aleixpol at kde.org
Sun Dec 15 16:20:58 GMT 2019


On Sat, Dec 14, 2019 at 1:08 AM Ben Cooksley <bcooksley at kde.org> wrote:
>
> On Sat, Dec 14, 2019 at 12:29 AM Nicolas Fella <nicolas.fella at gmx.de> wrote:
> >
> > I think Ben's concern is the load on our servers that is created by rebuilding each framework for each application build.
>
> Both. Ideally we don't want the builds to take any longer than they
> really should, while at the same time maximising the scalability of
> the system to handle all our builds (so we don't end up needing a
> large farm of machines to support a comparatively small number of
> builds).
>
> We utilise this approach with Krita's dependencies on Windows, MacOS
> and Linux Appimages, where all the dependencies are built in a
> separate set of dependency jobs and then reused by the application
> build jobs.
>
> Obviously we wouldn't have a dependency job for every single Android
> one, but a single shared one for all of them (being one per
> architecture and build type - release/debug) should be more than
> sufficient to cut down on the amount of stuff being built.
>
> >
> > Nico
>
> Cheers,
> Ben
>
> >
> > On 13 December 2019 11:03:06 CET, Aleix Pol <aleixpol at kde.org> wrote:
> >>
> >> On Thu, Dec 12, 2019 at 7:35 PM Nicolas Fella <nicolas.fella at gmx.de> wrote:
> >>>
> >>>
> >>>  Hi,
> >>>
> >>>  this is a breakout of https://mail.kde.org/pipermail/release-team/2019-December/011702.html since it's not really relevant for the release team.
> >>>
> >>>  The Android binary factory currently serves two purpose. It serves as a CI
> >>>  system in the sense that it catches (compiletime) breakages and it provides
> >>>  nightly APKs for beta users.
> >>>
> >>>  Given that we already have a few applications on Google Play and it's likely
> >>>  that more will join in the future I would like to expand the scope of it to
> >>>  also provide release builds from it, i.e. from stable branches, with binaries
> >>>  built in release mode etc. This aims to replace the custom solutions some
> >>>  projects have built for themselves.
> >>>
> >>>  On Donnerstag, 12. Dezember 2019 18:54:28 CET Ben Cooksley wrote:
> >>>>
> >>>>  With the way Android builds are currently conducted (building every
> >>>>  single dependency from scratch each time) i'm opposed to doing this as
> >>>>  it would double what is already quite an expensive load on the system
> >>>>  already.
> >>>>
> >>>>  I'd like to see the Android build process optimised to let it reuse
> >>>>  the results for most dependencies (Frameworks come to mind in
> >>>>  particular) before we head in that direction.
> >>>
> >>>
> >>>  Assuming that the general approach of using Docker for the builds is fine I
> >>>  would like to propose this:
> >>>  We provide a base image that contains the most common depenencies prebuilt,
> >>>  i.e. Qt and the main Frameworks. We provide this in two variants, stable and
> >>>  unstable. Stable would provide the latest frameworks release and would thus be
> >>>  regularly rebuilt once a month after the Frameworks release. The unstable
> >>>  version would contain a master Frameworks build to keep the CI/nightly aspect
> >>>  of the builds. This would be rebuilt more often, i.e. once a day. This would
> >>>  require a full Frameworks build per day which is still an improvement over 20
> >>>  full Frameworks builds per day as we have now. With regard to the Qt version I
> >>>  think sticking to the latest release as we do now is fine for both. A solution
> >>>  that would not need a full Qt build once a day would thus be preferrable, e.g.
> >>>  by using prebuilt Qt binaries or factoring out the Qt build into another base
> >>>  image. Application builds then would pick an appropriate base image, build the
> >>>  non-framework dependencies and finally the application itself. This should
> >>>  reduce the non-necessary frameworks rebuilds by a significant amount.
> >>>
> >>>  @Ben do you agree with this proposal?
> >>
> >>
> >> Am I right in the understanding that the reason to do this is we want
> >> faster builds on binary-factory?
> >>
> >> Aleix
> >
> >
> > --
> > Sent from my Android device with K-9 Mail. Please excuse my brevity.

Hi,
I put this together:
https://invent.kde.org/sysadmin/ci-tooling/commit/b1e5400926b44f59c56366c74317bb469eb703f3

Could you please set it up to be run on build.kde.org? I haven't had
time to do a proper testing round because I'm travelling today but it
should just work.

Aleix


More information about the KDE-Android mailing list