[JIRA] (JENKINS-43002) Unable to lock by label in a declarative pipeline script

8 views
Skip to first unread message

haneyd@roguewave.com (JIRA)

unread,
Mar 21, 2017, 5:40:01 PM3/21/17
to jenkinsc...@googlegroups.com
David Haney created an issue
 
Jenkins / Bug JENKINS-43002
Unable to lock by label in a declarative pipeline script
Issue Type: Bug Bug
Assignee: Unassigned
Components: lockable-resources-plugin
Created: 2017/Mar/21 9:39 PM
Priority: Blocker Blocker
Reporter: David Haney

Attempting to lock a resource label in a declarative pipeline script fails with the following error:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 7: Missing required parameter: "resource" @ line 7, column 17.
                   lock(label: 'foo') {
                   ^

1 error

	at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
	at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1073)
	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:591)
	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546)
	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:67)
	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:430)
	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:393)
	at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:238)
	at hudson.model.ResourceController.execute(ResourceController.java:98)
	at hudson.model.Executor.run(Executor.java:404)
Finished: FAILURE

The error was generated by the following declarative pipeline script:

pipeline {
    agent none
    stages {
        stage('Build') {
            agent none
            steps {
                lock(label: 'foo') {
                    echo 'Do something here that requires unique access to the resource'
                }
            }
        }
    }
}

If resource is swapped in for label, the script is able to execute. Likewise if lock call is called from a non-declarative pipeline, label works fine.

Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v7.3.0#73011-sha1:3c73d0e)
Atlassian logo

andrew.bayer@gmail.com (JIRA)

unread,
Mar 21, 2017, 7:05:03 PM3/21/17
to jenkinsc...@googlegroups.com
Andrew Bayer commented on Bug JENKINS-43002
 
Re: Unable to lock by label in a declarative pipeline script

Yeah, the underlying problem is that the @DataBoundConstructor for the lock step still requires resource. In Scripted Pipeline, with named arguments, the actual call ends up having resource: null magically included, but in Declarative's validation process, we can't know that yeah, this isn't really a required parameter, so...

andrew.bayer@gmail.com (JIRA)

unread,
Mar 21, 2017, 7:15:01 PM3/21/17
to jenkinsc...@googlegroups.com

fwiw, you can do lock(resource: null, label: 'foo') and that'll work fine. I think. If it doesn't, i.e., if it errors out during Declarative validation due to the null, that's a Declarative bug. =)

f.modler@gmx.net (JIRA)

unread,
Mar 7, 2019, 4:31:02 PM3/7/19
to jenkinsc...@googlegroups.com

fwiw, you can do lock(resource: null, label: 'foo') and that'll work fine. I think.

Confirmed (Jenkins 2.150.3, pipeline-model-definition 1.3.4.1).

This message was sent by Atlassian Jira (v7.11.2#711002-sha1:fdc329d)

tobias-jenkins@23.gs (JIRA)

unread,
Oct 12, 2019, 10:20:03 AM10/12/19
to jenkinsc...@googlegroups.com
Tobias Gruetzmacher updated an issue
 
Change By: Tobias Gruetzmacher
Priority: Blocker Minor
This message was sent by Atlassian Jira (v7.13.6#713006-sha1:cc4451f)
Atlassian logo

tobias-jenkins@23.gs (JIRA)

unread,
Nov 1, 2019, 6:54:03 PM11/1/19
to jenkinsc...@googlegroups.com
Tobias Gruetzmacher commented on Bug JENKINS-43002
 
Re: Unable to lock by label in a declarative pipeline script

I'm not really sure how that can be fixed without breaking backward-compatibility with the one-argument lock-step for scripted pipeline...

adam.gabrys@live.com (JIRA)

unread,
Nov 3, 2019, 4:39:03 AM11/3/19
to jenkinsc...@googlegroups.com

I was looking for how others solved this problem ("fixed without breaking backward-compatibility"). The answer is: fixes are not backward-compatible. Some examples:

Maybe it is a good time for Lockable Resources plugin 3.X ? You will be able to fix the bug and you don't have to afraid about backward-compatibility (because it is a new major version). What do you think?

adam.gabrys@live.com (JIRA)

unread,
Nov 3, 2019, 4:40:07 AM11/3/19
to jenkinsc...@googlegroups.com
Adam Gabryś edited a comment on Bug JENKINS-43002
I was looking for how others solved this problem ("fixed without breaking backward-compatibility"). The answer is: fixes are not backward-compatible. Some examples:
* sauce-ondemand-plugin: JENKINS-41236 ([ see changes in code|https://github.com/jenkinsci/sauce-ondemand-plugin/commit/18608f6f3e3188fd0c4f3f0d5002291575c35fb1])
* stashnotifier-plugin: [#245|https://github.com/jenkinsci/stashnotifier-plugin/issues/245] ([see changes in code|https://github.com/westarne/stashnotifier-plugin/commit/d34dbce05b7e7eb2e2d8e42481a6743fdd0fa901])

Maybe it is a good time for Lockable Resources plugin 3.X ? ;) You will be able to fix the bug and you don't have to afraid about backward-compatibility (because it is a new major version). What do you think?

adam.gabrys@live.com (JIRA)

unread,
Nov 3, 2019, 4:42:03 AM11/3/19
to jenkinsc...@googlegroups.com
Adam Gabryś edited a comment on Bug JENKINS-43002
I was looking for how others solved this problem ("fixed without breaking backward-compatibility"). The answer is: fixes are not backward-compatible. Some examples:
* sauce-ondemand-plugin: JENKINS-41236 ([see changes in code|https://github.com/jenkinsci/sauce-ondemand-plugin/commit/18608f6f3e3188fd0c4f3f0d5002291575c35fb1])
* stashnotifier-plugin: [#245|https://github.com/jenkinsci/stashnotifier-plugin/issues/245] ([see changes in code|https://github.com/ westarne jenkinsci /stashnotifier-plugin/commit/d34dbce05b7e7eb2e2d8e42481a6743fdd0fa901])


Maybe it is a good time for Lockable Resources plugin 3.X ? ;) You will be able to fix the bug and you don't have to afraid about backward-compatibility (because it is a new major version). What do you think?
Reply all
Reply to author
Forward
0 new messages