Executing parallel GradleBuild tasks - not possible?

(Mark E. Scott, Jr.) #1

We have a number of projects from separate repositories that are built, and ultimately combined to form a single SDK.

I was trying to orchestrate these from Gradle (using Gradle 4.3.1), and using GradleBuild tasks from a parent, orchestrator project.

Here are the dependencies:

ProjectPackageSdk - depends on Projects C & D
ProjectD - depends on Project B
ProjectB - depends on Project A
ProjectC - depends on Project A
ProjectA - no dependencies

So, when project A is built, B & C can both kick off (and do currently, via our Jenkins jobs). However, I find that in this case, the parent build with - the GradleBuild tasks - doesn’t seem to be doing them in parallel, despite there not being any dependencies listed beyond what you see above.

I can see that as the large project (B) is going on, the executors start going idle, and it is sitting at one or two, which are running some unit tests. During this period, it could/should be running tasks from Project C, especially if I were to configure it to use many, many executors.

Is this just not possible with GradleBuild tasks?

I originally thought I’d do this with composite builds, but it seems that the fact that we tweak the pom files makes that a no-go.

(Mark E. Scott, Jr.) #2

Just to be specific, each of the projects, has many subprojects. Normally they are checked out by themselves by the developers. I’m not literally referring to a single project, but a set of projects, described with their own root project.

(James Justinic) #3

It is possible for multiple GradleBuild tasks to run in parallel, but the normal parallel task limitations are still applicable. Regardless of task type, only one task from each project will run concurrently (unless the task has started using the incubating worker API). You will see this behavior with the GradleBuild tasks in the orchestrator build unless you make it a multi-project build or try to roll your own equivalent task using the worker API. However, since this is the case for composite builds, I would make sure you really have that limitation and file / support / comment on any issue that closes that gap for you.