Apparently there are Flyweight and Heavyweight Executors.
Flyweight runs on the master, while the node step runs on the slave 
matching the label.

> When you run a node step:
>
>    - 
>    
>    A regular heavyweight executor is allocated on a node (usually a 
>    slave) matching the label expression, as soon as one is available. This 
>    executor represents the real work being done on the node.
>    - 
>    
>    If you start a second build of the Pipeline while the first is still 
>    paused with the one available executor, you will see both Pipeline builds 
>    running on master. But only the first will have grabbed the one available 
>    executor on the slave; the other part of jobname #11 will be shown in 
> Build 
>    Queue (1). (shortly after, the console log for the second build will 
>    note that it is still waiting for an available executor).
>    
>
Even the master node has limited executors. What I need is to schedule 
builds on a flyweight executor since it does not need an actual workspace 
to perform.

Using this will likely allocate a heavyweight executor.
node("master") {
   ....
}


fredag 3. juni 2016 10.39.48 UTC+2 skrev Sverre Moe følgende:
>
> My first predicament:
> In Multi-configuration build, one single executor can contain multiple 
> parent build, but that single executor can only contain one 
> configuration/axis/slave build at a time.
>
> Using Pipeline I am not sure how to get it to work like this.
> After my Build stage I try to schedule build of all the dependencies and 
> it will wait until they finish. But the project already holds the executor.
>
> ProjectA schedules ProjectB. ProjectA waits for ProjectB, ProjectB cannot 
> start because ProjectA holds the executor on the same slave node. So they 
> are both locked...
> build '../ProjectB/master'
>
>> Still waiting to schedule task
>> Waiting for next available executor on master-sles11-x86_64
>>
>
> How can I do the same in Pipeline as I do with Multi-configuration parent. 
> The parent node is is selected from the list of nodes the project is 
> building on. I could probably solve this by making the Jenkins master as 
> the parent node while building dependencies. Triggering other projects to 
> build does not necessary need to be done on one the build nodes.
>
> It would not make a good approach for me to increase the number of 
> executors on the slave nodes. Since the build is removing/installing rpm 
> packages in the build stage it could cause havoc having two builds doing 
> this interchangeably. Each build must have the slave node system to itself 
> while building.
>
>
> My second predicament:
> Each of my projects has an RPM spec file. Its BuildRequires dependencies 
> are declared in this file. When building I acquire a list of all the 
> upstream build dependencies which is parsed from this file. This is used to 
> install all needed libraries before building. However I also need to build 
> all the downstream dependencies, all the other projects that contain this 
> project in their RPM spec file.
>
> Using pipeline it is as easy to just call
> def buildResult = build dependency+"/"+BRANCH_NAME
> However I am not sure how to lookup these downstream dependencies. I would 
> need to check out each and every project within Jenkins, parse their spec 
> file and compute the dependencies. That is the only approach I could see 
> before me, but perhaps not the best approach. It seems like a heavy 
> operation to perform for each build to checkout 50+ projects.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/7e03efde-7736-4ffe-8b14-f37547a1322c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to