Now I understand. I had not considered locking a particular node for re-use 
in the same job. There must be some way to pin the node even if it is freed 
up. I will try to think of a solution.

On Wednesday, April 3, 2019 at 7:05:34 PM UTC-7, Dusan Nikolov wrote:
>
> Hi Brian,
>
> I think lock works within steps and script block, however this doesn't 
> help me. I need bigger to lock a node across several sequential stages to 
> prevent it from being freed.
>
> This is the use case:
> Node1 and Node2 start working their parts of a stage in parallel. Parallel 
> stages is used to, well parallelize workflow. End of first parallel block 
> is a synchronization point (end of setup phase).
> After this, nodes go into the second parallel block, where they do the 
> testing (testing involves both nodes as a unit).
>
> Nodes can finish phase1 at different speeds, and due to this Jenkins makes 
> the node that is waiting on the other one available for other jobs 
> (including a queued run of this same job). I want to prevent it from being 
> available.
>
> I hope I explained my use case more closely now.
>
> On Sun, Mar 24, 2019, 10:11 AM Brian Ray <[email protected] 
> <javascript:>> wrote:
>
>> I just made a suggestion on a similar thread 
>> <https://groups.google.com/d/msg/jenkinsci-users/41bKAIfrPAw/zpuyg__7AAAJ>. 
>> Does lock work inside a steps block? Or a script block? It seems like it 
>> should, because it is a step that does something imperatively.
>>
>> On Thursday, March 7, 2019 at 3:58:59 PM UTC-8, Dusan Nikolov wrote:
>>>
>>> Hi, 
>>> I'm trying to figure out how/if it's possible to create a lock that will 
>>> guard multiple stages of a pipeline execution, based on the NODE_NAME on 
>>> which they are supposed to execute.
>>>
>>> I tried putting the lock in the options block of the surrounding stage, 
>>> but this throws an error because options block in a stage is 
>>> executed/evaluated before agent block.
>>> Please see the example pipeline below for reference:
>>>
>>> pipeline {
>>> agent none
>>> stages {
>>> stage ('main') {
>>> parallel {
>>> stage ('server') {
>>> agent { label 'server' }
>>> // options { lock(NODE_NAME) }
>>> stages {
>>> stage ('all') {
>>> options { lock("${NODE_NAME}") } // this also seems to fail
>>> steps {
>>> script {
>>> echo "${NODE_NAME}"
>>> sleep(10)
>>> }
>>> }
>>> }
>>> }
>>> }
>>> stage ('client') {
>>> agent { label 'client' }
>>> stages {
>>> stage ('all') {
>>> options { lock("${NODE_NAME}") }
>>> steps {
>>> script {
>>> echo "${NODE_NAME}"
>>> sleep(10)
>>> }
>>> }
>>> }
>>> }
>>> }
>>> }
>>> }
>>> }
>>> }
>>>
>> -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "Jenkins Users" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/jenkinsci-users/Jlhy1hxe92M/unsubscribe
>> .
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/jenkinsci-users/0e87d972-12b5-4b51-ae2d-7f269f417b5a%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/jenkinsci-users/0e87d972-12b5-4b51-ae2d-7f269f417b5a%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
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/d1103e8c-d6e0-4dc2-b6dd-c70786a18317%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to