Skip to content

Commit 76126c7

Browse files
authored
Merge pull request #337 from jglick/closuritis
Adapt to Declarative change
2 parents 3e6972b + 85bf389 commit 76126c7

File tree

4 files changed

+88
-76
lines changed

4 files changed

+88
-76
lines changed

pom.xml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@
3232
<changelist>999999-SNAPSHOT</changelist>
3333
<!-- https://www.jenkins.io/doc/developer/plugin-development/choosing-jenkins-baseline/ -->
3434
<jenkins.baseline>2.479</jenkins.baseline>
35-
<jenkins.version>${jenkins.baseline}.1</jenkins.version>
35+
<jenkins.version>${jenkins.baseline}.3</jenkins.version>
36+
<!-- TODO until in BOM -->
37+
<pipeline-model-definition.version>2.2234.v4a_b_13b_8cd590</pipeline-model-definition.version>
3638
<gitHubRepo>jenkinsci/${project.artifactId}-plugin</gitHubRepo>
3739
</properties>
3840
<repositories>
@@ -52,10 +54,36 @@
5254
<dependency>
5355
<groupId>io.jenkins.tools.bom</groupId>
5456
<artifactId>bom-${jenkins.baseline}.x</artifactId>
55-
<version>3893.v213a_42768d35</version>
57+
<version>4228.v0a_71308d905b_</version>
5658
<scope>import</scope>
5759
<type>pom</type>
5860
</dependency>
61+
<dependency>
62+
<groupId>org.jenkinsci.plugins</groupId>
63+
<artifactId>pipeline-model-api</artifactId>
64+
<version>${pipeline-model-definition.version}</version>
65+
</dependency>
66+
<dependency>
67+
<groupId>org.jenkinsci.plugins</groupId>
68+
<artifactId>pipeline-model-definition</artifactId>
69+
<version>${pipeline-model-definition.version}</version>
70+
</dependency>
71+
<dependency>
72+
<groupId>org.jenkinsci.plugins</groupId>
73+
<artifactId>pipeline-model-definition</artifactId>
74+
<version>${pipeline-model-definition.version}</version>
75+
<classifier>tests</classifier>
76+
</dependency>
77+
<dependency>
78+
<groupId>org.jenkinsci.plugins</groupId>
79+
<artifactId>pipeline-model-extensions</artifactId>
80+
<version>${pipeline-model-definition.version}</version>
81+
</dependency>
82+
<dependency>
83+
<groupId>org.jenkinsci.plugins</groupId>
84+
<artifactId>pipeline-stage-tags-metadata</artifactId>
85+
<version>${pipeline-model-definition.version}</version>
86+
</dependency>
5987
</dependencies>
6088
</dependencyManagement>
6189
<dependencies>

src/main/resources/org/jenkinsci/plugins/docker/workflow/declarative/AbstractDockerPipelineScript.groovy

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,44 +26,38 @@
2626
package org.jenkinsci.plugins.docker.workflow.declarative
2727

2828
import hudson.FilePath
29-
import org.jenkinsci.plugins.pipeline.modeldefinition.agent.DeclarativeAgentScript
29+
import org.jenkinsci.plugins.pipeline.modeldefinition.agent.DeclarativeAgentScript2
3030
import org.jenkinsci.plugins.workflow.cps.CpsScript
3131

32-
abstract class AbstractDockerPipelineScript<A extends AbstractDockerAgent<A>> extends DeclarativeAgentScript<A> {
32+
abstract class AbstractDockerPipelineScript<A extends AbstractDockerAgent<A>> extends DeclarativeAgentScript2<A> {
3333

3434
AbstractDockerPipelineScript(CpsScript s, A a) {
3535
super(s, a)
3636
}
3737

3838
@Override
39-
Closure run(Closure body) {
39+
void run(Closure body) {
4040
if (describable.reuseNode && script.getContext(FilePath.class) != null) {
41-
return {
42-
configureRegistry(body).call()
43-
}
41+
configureRegistry(body)
4442
} else if (describable.containerPerStageRoot) {
45-
return DeclarativeDockerUtils.getLabelScript(describable, script).run {
46-
body.call()
47-
}
43+
DeclarativeDockerUtils.getLabelScript(describable, script).run(body)
4844
} else {
49-
return DeclarativeDockerUtils.getLabelScript(describable, script).run {
50-
configureRegistry(body).call()
45+
DeclarativeDockerUtils.getLabelScript(describable, script).run {
46+
configureRegistry(body)
5147
}
5248
}
5349
}
5450

55-
protected Closure configureRegistry(Closure body) {
56-
return {
57-
DeclarativeDockerUtils.DockerRegistry registry = DeclarativeDockerUtils.DockerRegistry.build(describable.registryUrl, describable.registryCredentialsId)
58-
if (registry.hasData()) {
59-
script.getProperty("docker").withRegistry(registry.registry, registry.credential) {
60-
runImage(body).call()
61-
}
62-
} else {
63-
runImage(body).call()
51+
protected void configureRegistry(Closure body) {
52+
DeclarativeDockerUtils.DockerRegistry registry = DeclarativeDockerUtils.DockerRegistry.build(describable.registryUrl, describable.registryCredentialsId)
53+
if (registry.hasData()) {
54+
script.getProperty("docker").withRegistry(registry.registry, registry.credential) {
55+
runImage(body)
6456
}
57+
} else {
58+
runImage(body)
6559
}
6660
}
6761

68-
protected abstract Closure runImage(Closure body)
62+
protected abstract void runImage(Closure body)
6963
}

src/main/resources/org/jenkinsci/plugins/docker/workflow/declarative/DockerPipelineFromDockerfileScript.groovy

Lines changed: 31 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -37,49 +37,43 @@ class DockerPipelineFromDockerfileScript extends AbstractDockerPipelineScript<Do
3737
}
3838

3939
@Override
40-
Closure runImage(Closure body) {
41-
return {
42-
def img = null
43-
if (!Utils.withinAStage()) {
44-
script.stage(SyntheticStageNames.agentSetup()) {
45-
try {
46-
img = buildImage().call()
47-
} catch (Exception e) {
48-
Utils.markStageFailedAndContinued(SyntheticStageNames.agentSetup())
49-
throw e
50-
}
40+
void runImage(Closure body) {
41+
def img = null
42+
if (!Utils.withinAStage()) {
43+
script.stage(SyntheticStageNames.agentSetup()) {
44+
try {
45+
img = buildImage()
46+
} catch (Exception e) {
47+
Utils.markStageFailedAndContinued(SyntheticStageNames.agentSetup())
48+
throw e
5149
}
52-
} else {
53-
img = buildImage().call()
54-
}
55-
if (img != null) {
56-
img.inside(describable.args, {
57-
body.call()
58-
})
5950
}
51+
} else {
52+
img = buildImage()
53+
}
54+
if (img != null) {
55+
img.inside(describable.args, body)
6056
}
6157
}
6258

63-
private Closure buildImage() {
64-
return {
65-
boolean isUnix = script.isUnix()
66-
def dockerfilePath = describable.getDockerfilePath(isUnix)
67-
try {
68-
RunWrapper runWrapper = (RunWrapper)script.getProperty("currentBuild")
69-
def additionalBuildArgs = describable.getAdditionalBuildArgs() ? " ${describable.additionalBuildArgs}" : ""
70-
def hash = Utils.stringToSHA1("${runWrapper.fullProjectName}\n${script.readFile("${dockerfilePath}")}\n${additionalBuildArgs}")
71-
def imgName = "${hash}"
72-
def commandLine = "docker build -t ${imgName}${additionalBuildArgs} -f \"${dockerfilePath}\" \"${describable.getActualDir()}\""
73-
if (isUnix)
74-
script.sh commandLine
75-
else
76-
script.bat commandLine
59+
private def buildImage() {
60+
boolean isUnix = script.isUnix()
61+
def dockerfilePath = describable.getDockerfilePath(isUnix)
62+
try {
63+
RunWrapper runWrapper = (RunWrapper)script.getProperty("currentBuild")
64+
def additionalBuildArgs = describable.getAdditionalBuildArgs() ? " ${describable.additionalBuildArgs}" : ""
65+
def hash = Utils.stringToSHA1("${runWrapper.fullProjectName}\n${script.readFile("${dockerfilePath}")}\n${additionalBuildArgs}")
66+
def imgName = "${hash}"
67+
def commandLine = "docker build -t ${imgName}${additionalBuildArgs} -f \"${dockerfilePath}\" \"${describable.getActualDir()}\""
68+
if (isUnix)
69+
script.sh commandLine
70+
else
71+
script.bat commandLine
7772

78-
return script.getProperty("docker").image(imgName)
79-
} catch (FileNotFoundException f) {
80-
script.error("No Dockerfile found at ${dockerfilePath} in repository - failing.")
81-
return null
82-
}
73+
return script.getProperty("docker").image(imgName)
74+
} catch (FileNotFoundException f) {
75+
script.error("No Dockerfile found at ${dockerfilePath} in repository - failing.")
76+
return null
8377
}
8478
}
8579
}

src/main/resources/org/jenkinsci/plugins/docker/workflow/declarative/DockerPipelineScript.groovy

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,20 @@ class DockerPipelineScript extends AbstractDockerPipelineScript<DockerPipeline>
3636
}
3737

3838
@Override
39-
Closure runImage(Closure body) {
40-
return {
41-
if (!Utils.withinAStage() && describable.alwaysPull) {
42-
script.stage(SyntheticStageNames.agentSetup()) {
43-
try {
44-
script.getProperty("docker").image(describable.image).pull()
45-
} catch (Exception e) {
46-
Utils.markStageFailedAndContinued(SyntheticStageNames.agentSetup())
47-
throw e
48-
}
39+
void runImage(Closure body) {
40+
if (!Utils.withinAStage() && describable.alwaysPull) {
41+
script.stage(SyntheticStageNames.agentSetup()) {
42+
try {
43+
script.getProperty("docker").image(describable.image).pull()
44+
} catch (Exception e) {
45+
Utils.markStageFailedAndContinued(SyntheticStageNames.agentSetup())
46+
throw e
4947
}
5048
}
51-
if (Utils.withinAStage() && describable.alwaysPull) {
52-
script.getProperty("docker").image(describable.image).pull()
53-
}
54-
script.getProperty("docker").image(describable.image).inside(describable.args, {
55-
body.call()
56-
})
5749
}
50+
if (Utils.withinAStage() && describable.alwaysPull) {
51+
script.getProperty("docker").image(describable.image).pull()
52+
}
53+
script.getProperty("docker").image(describable.image).inside(describable.args, body)
5854
}
5955
}

0 commit comments

Comments
 (0)