consolidating CI builds

Peter Hutterer peter.hutterer at who-t.net
Wed Jun 12 00:50:44 UTC 2024


On Tue, Jun 11, 2024 at 10:49:35AM +0200, Enrico Weigelt, metux IT consult wrote:
> On 11.06.24 09:09, Peter Hutterer wrote:
> 
> hi folks,
> 
> > With my ci-templates maintainer hat on: no to xorg-specific templates in
> > there, it gets too messy.
> 
> Indeed that would be the most wrong place.
> 
> > Note that you can include any file from another repo (I think) so in
> > theory we could ship the templates in e.g.
> > xserver/.gitlab-templates/foo.yml or whatever. Not saying we should do
> > that, just noting it's possible.
> 
> Actually though of that. It has some logic: drivers are depending on
> Xserver anyways, it already provides some "sdk" for them.
> 
> By the way: most of that stuff isn't actually gitlab specific - they're
> also designed to be called directly, eg. from within chroot or VM.
> So they're also helpful for scenarios that we can't easily integrate
> on gitlab (Solaris, NetBSD, ...). They also hold the logic for OS
> specific tweaks (eg. special pkgconf pathes), detecting the actual build
> system (xserver as well as driver), etc, etc.
> 
> The more I'm thinking about it, the stronger my feeling that xserver
> repo smells like the best candidate.
> 
> > ci-fairy (in ci-templates) also has a generate-templates command that
> > e.g. libinput uses to generate templates from a config.yml and a jinja
> > file. This could also be an option - have a shared *source* template
> > somewhere, then generate the .gitlab-ci.yml it with repo-specific config
> > values.
> 
> Maybe I'm not really understanding your idea, but I don't feel that's
> the best way: there's not really anything to generate, and the way it's
> done with current templates (eg. the generator has to put in blob
> hashes, etc) IMHO isn't the fine art.

the blob hashes are specific to ci-templates and ensure that building
from the templates pulls in the right cbuild scripts, they don't (need to)
exist anywhere else. `ci-fairy generate-templates` is really just a
fairly thin wrapper around a jinja2 template, that's it.

> Speaking of which: why doesn't it just clone the git repo for getting
> scripts like cbuild, etc ? IMHO would make things a lot easier than
> having "hardcoded" hashes in the generated templates. By the way, while
> working on on the CI stuff, learned that a lot of sophisticated things
> can be done via gitlab templates (still far away from jenkins
> capabilities) ... maybe we could do it even w/o generating templates.
> But that's another topic of it's own.

It's a result of how the ci-templates work. ci-templates are used via
include:, with a specific git sha. Those templates need to pull in the
matching cbuild script (since there *may* be a strict dependency between
that and the template itself). But the template cannot know the git sha
of itself, hence the workaround with the extra checksums.

> Back to xorg drivers:
> 
> As things are now, moving that all out to separate repo just doesn't
> work: cbuild (when building the container images) makes it's own git
> clone of the project's repo, and we don't have any means for injecting
> extra steps. So, when $FDO_DISTRIBUTION_EXEC is called, the scripts
> are missing :(
> 
> I've played around with job inheritance and before_script, so the aux
> repo is cloned before anything else. But that failed at cbuild for
> the reasons above.
> 
> Just got one spontanous idea I'll yet have to try: also add those
> commands to $FDO_DISTRIBUTION_EXEC. Clumpsy, but maybe it could work.

FDO_DISTRIBUTION_EXEC is a convenience helper, you can call out into a
shell script which can then do whatever it wants (and IIRC it inherits
the gitlab env too so you can check for the various CI_FOO).

plenty of projects use FDO_DISTRIBUTION_EXEC to e.g. git clone
dependencies and install them.
 
Cheers,
  Peter

> 
> --mtx
> 
> --
> ---
> Hinweis: unverschlüsselte E-Mails können leicht abgehört und manipuliert
> werden ! Für eine vertrauliche Kommunikation senden Sie bitte ihren
> GPG/PGP-Schlüssel zu.
> ---
> Enrico Weigelt, metux IT consult
> Free software and Linux embedded engineering
> info at metux.net -- +49-151-27565287


More information about the xorg-devel mailing list