Draft for mail about ci
L. E. Segovia
amy at amyspark.me
Thu Mar 9 21:21:19 GMT 2023
Hi all,
Based on the previous emails, it seems a key item wasn't covered:
6) Local builds with 3rdparty deps (replica CI environment)
* uses our custom deps built from 3rdparty folder
* can be rebuilt locally
Now, I'm totally unfamiliar with Craft's rationale and how it works, so
I have three questions coming from my own experience tinkering with
3rdparty.
- Ben had told me, if I'm not mistaken, about make DESTDIR being the
workhorse of Craft. I know that CMake may disallow it it in Windows:
https://cmake.org/cmake/help/latest/envvar/DESTDIR.html. So, does Craft
work with Windows dependencies, whether MSVC or Clang?
- Does KDE sysadmin allow external retrieval of the packages for a
developer environment? If so, what's the procedure to recreate it using
Craft?
- Does Craft require a certain directory layout? In other words, does it
support relocatable dependencies outside of Unix-based operating systems?
Best,
amyspark
On 09/03/2023 14:35, Ingo Klöcker wrote:
> On Donnerstag, 9. März 2023 17:52:20 CET Dmitry Kazakov wrote:
>> I think the problem is not in the specific tool we use (it is possible to
>> implement with any build system, including the upcoming GitLab). The
>> problem is that we need quite an extensive build matrix, and we are
>> wondering if KDE can actually host all that? We heard multiple times from
>> sysadmins that build times and build variety might be a problem.
>
> The main problem is rebuilding things again and again that don't need
> rebuilding. That's where Craft's cache can help.
>
>> Ideally, what we need is something like that:
>>
>> 1) CI builds:
>> * uses our custom deps built from 3rdparty folder
>
> If you move the 3rdparty folder to a separate repo, then you'd get automatic
> rebuilds of the dependencies for free. Of course, you will lose the baked-in
> coupling to 3rdparty. Using Craft's blue print approach may be even better.
>
>> * builds unittests and static analyser
>> * built for every (bunch of) commit(s)
>> * built for linux (and, optionally, windows, osx, android)
>
> Check (for GitLab CI).
>
>> 2) MR builds: same as CI builds but
>> * builds an AppImage or a prebuilt docker image for testers
>> * built for each MR
>
> Check.
>
>> 3) Nightly builds:
>> * uses our custom deps built from 3rdparty folder
>> * builds packages for linux, windows, osx, android
>> * builds nightly
>
> Builds with a fixed schedule are a bit of the problem because they may not be
> necessary if nothing changed in the last 24 hours. That may not be an issue
> for an actively developed application like Krita. In any case, GitLab supports
> scheduled builds even if we don't use them currently as far as I know.
>
>> 4) Release builds:
>> * uses our custom deps built from 3rdparty folder
>> * builds packages for linux, windows, osx, android
>> * builds on request
>
> That's what manual GitLab jobs give us.
>
>> 5) Distribution builds (just to make sure distributions can build Krita in
>> some (probably, unsupported) way)
>> * uses dependencies from the distributions
>> * some currently missing dependencies should be built somehow manually
>> or installed from a custom repository
>> * builds unittests and static analyser
>> * builds nightly
>> * built for linux and freebds(?)
>
> For some of this you might want to look into using the openSUSE Build Service.
> Despite the name it allows building packages for many distributions. This
> could be less work than maintaining your own set of Docker images for building
> Krita for the different distributions.
>
>> Technically, it is possible to implement such layout within the feature set
>> of GitLab. Though I'm not sure how many resources it would require.
>
> If 3rdparty isn't rebuilt more often then necessary, then I'm sure GitLab will
> manage this. It survived many frameworks releases and Gear releases.
>
> Regards,
> Ingo
--
amyspark 🌸 https://www.amyspark.me
More information about the kimageshop
mailing list