Two jobs at once on denx-vulcan?

Harald Seiler hws at denx.de
Fri Sep 24 16:01:21 CEST 2021


Hi Simon,

On Mon, 2021-09-20 at 08:06 -0600, Simon Glass wrote:
> Hi Harald,
> 
> On Mon, 20 Sept 2021 at 02:12, Harald Seiler <hws at denx.de> wrote:
> > 
> > Hi,
> > 
> > On Sat, 2021-09-18 at 10:37 -0600, Simon Glass wrote:
> > > Hi,
> > > 
> > > Is there something screwy with this? It seems that denx-vulcan does
> > > two builds at once?
> > > 
> > > https://source.denx.de/u-boot/custodians/u-boot-dm/-/jobs/323540
> > 
> > Hm, I did some changes to the vulcan runner which might have caused
> > this... But still, even if it is running multiple jobs in parallel, they
> > should still be isolated, so how does this lead to a build failure?
> 
> I'm not sure that it does, but I do see this at the above link:
> 
> Error: Unable to create
> '/builds/u-boot/custodians/u-boot-dm/.git/logs/HEAD.lock': File
> exists.

This is super strange... Each build should be running in its own
container so there should never be a way for such a race to occur.  No
clue what is going on here...

> Re doing multiple builds, have you set it up so it doesn't take on the
> very large builds? I would love to enable multiple builds for the qemu
> steps since they mostly use a single CPU, but am not sure how to do
> it.

Actually, this was more a mistake than an intentional change.  I updated
the runner on vulcan to also take jobs for some other repos and wanted
those jobs to run in parallel.  It looks like I just forgot setting the
`limit = 1` option for the U-Boot runner.

Now, I think doing what you suggest is possible.  We need to tag build
and "test" jobs differently and then define multiple runners with
different limits.  E.g. in `.gitlab-ci.yml`:

	build all 32bit ARM platforms:
	  stage: world build
	  tags:
	    - build

	cppcheck:
	  stage: testsuites
	  tags:
	    - test

And then define two runners in `/etc/gitlab-runner/config.toml`:

	concurrent = 4

	[[runners]]
	  name = "u-boot builder on vulcan"
	  limit = 1
	  ...

	[[runners]]
	  name = "u-boot tester on vulcan"
	  limit = 4
	  ...

and during registration they get the `build` and `test` tags
respectively.  This would allow running (in this example) up to 4 test
jobs concurrently, but only ever one large build job at once.

-- 
Harald

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-62  Fax: +49-8142-66989-80   Email: hws at denx.de



More information about the U-Boot mailing list