Hi,
the downside of using a ephemeral lock like "${NODE_NAME}-display" is that you
cannot select a node where the resource is actually free.
In the worst case, all your builds that require a display are using the same
node,
blocking each other while other nodes are still free. This is not a problem in
case the UI tests runtime is short or the the nodes do not have a lot of
executors.
Alternatively, you can actually lock a resource without a node context. You
will need to
create a "display" resource for each node in this case. In order to map this
resource to a node, the easiest way would be to use a resource name which
includes
the agent name.
e.g.
lock(label: 'display', quantity: 1, resourceSelectStrategy: '', variable:
'LOCKED_RESOURCE') {
// LOCKED_RESOURCE name should be something like "NODE-display"
node(env.LOCKED_RESOURCE.replace('-display', '')) {
...
}
}
The downside of this approach is that the agent might not have a free executor
(if there are may jobs which do not require a display).
It depends on your use case which approach is best suitable.
I do not know of any solution which combines "free resource and free executor",
a combination of "node" and "lock" step would be a nice feature :)
--
Christoph
--
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/9164404.rMLUfLXkoz%40lmi-nb49.