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]> 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].
> 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/CAFVs2_B8bR%3DHUqsR8Tzy21v8WBg49VVJfTSpZnD-txPrzAU5ng%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to