Skip to content

Commit c727e97

Browse files
authored
Merge pull request #256 from dwnusbaum/post-SECURITY-359
Use GroovySourceFileAllowlist to adapt to SECURITY-359 changes
2 parents c7dedef + 089a373 commit c727e97

File tree

5 files changed

+52
-9
lines changed

5 files changed

+52
-9
lines changed

pom.xml

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131
<properties>
3232
<revision>1.29</revision>
3333
<changelist>-SNAPSHOT</changelist>
34-
<jenkins.version>2.222.4</jenkins.version>
34+
<jenkins.version>2.332.1</jenkins.version>
3535
<java.level>8</java.level>
36-
<pipeline-model-definition-plugin.version>1.8.1</pipeline-model-definition-plugin.version>
36+
<pipeline-model-definition-plugin.version>2.2097.v33db_b_de764b_e</pipeline-model-definition-plugin.version> <!-- TODO: Delete this and related dependencyManagement entries once this version is included in BOM -->
3737
</properties>
3838
<repositories>
3939
<repository>
@@ -51,12 +51,26 @@
5151
<dependencies>
5252
<dependency>
5353
<groupId>io.jenkins.tools.bom</groupId>
54-
<artifactId>bom-2.222.x</artifactId>
55-
<version>887.vae9c8ac09ff7</version>
54+
<artifactId>bom-2.332.x</artifactId>
55+
<version>1409.v7659b_c072f18</version>
5656
<scope>import</scope>
5757
<type>pom</type>
5858
</dependency>
59-
59+
<dependency>
60+
<groupId>org.jenkinsci.plugins</groupId>
61+
<artifactId>pipeline-model-api</artifactId>
62+
<version>${pipeline-model-definition-plugin.version}</version>
63+
</dependency>
64+
<dependency>
65+
<groupId>org.jenkinsci.plugins</groupId>
66+
<artifactId>pipeline-model-extensions</artifactId>
67+
<version>${pipeline-model-definition-plugin.version}</version>
68+
</dependency>
69+
<dependency>
70+
<groupId>org.jenkinsci.plugins</groupId>
71+
<artifactId>pipeline-stage-tags-metadata</artifactId>
72+
<version>${pipeline-model-definition-plugin.version}</version>
73+
</dependency>
6074
</dependencies>
6175
</dependencyManagement>
6276
<dependencies>
@@ -116,12 +130,12 @@
116130
<dependency>
117131
<groupId>org.jenkins-ci.plugins</groupId>
118132
<artifactId>config-file-provider</artifactId>
119-
<version>2.10.1</version>
120133
<scope>test</scope>
121134
</dependency>
122135
<dependency>
123136
<groupId>org.jenkinsci.plugins</groupId>
124137
<artifactId>pipeline-model-definition</artifactId>
138+
<version>${pipeline-model-definition-plugin.version}</version>
125139
</dependency>
126140
<dependency>
127141
<groupId>org.jenkins-ci.plugins</groupId>
@@ -143,6 +157,7 @@
143157
<dependency>
144158
<groupId>org.jenkinsci.plugins</groupId>
145159
<artifactId>pipeline-model-definition</artifactId>
160+
<version>${pipeline-model-definition-plugin.version}</version>
146161
<classifier>tests</classifier>
147162
<scope>test</scope>
148163
</dependency>

src/main/java/org/jenkinsci/plugins/docker/workflow/DockerDSL.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import hudson.Extension;
2929
import org.jenkinsci.plugins.workflow.cps.CpsScript;
3030
import org.jenkinsci.plugins.workflow.cps.GlobalVariable;
31+
import org.jenkinsci.plugins.workflow.cps.GroovySourceFileAllowlist;
3132

3233
/**
3334
* Something you should <strong>not copy</strong>. Write plain old {@code Step}s and leave it at that.
@@ -53,4 +54,13 @@
5354
return docker;
5455
}
5556

57+
@Extension
58+
public static class DockerDSLAllowlist extends GroovySourceFileAllowlist {
59+
private final String scriptUrl = DockerDSL.class.getResource("Docker.groovy").toString();
60+
61+
@Override
62+
public boolean isAllowed(String groovyResourceUrl) {
63+
return groovyResourceUrl.equals(scriptUrl);
64+
}
65+
}
5666
}

src/main/java/org/jenkinsci/plugins/docker/workflow/declarative/AbstractDockerAgent.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@
2828

2929
import edu.umd.cs.findbugs.annotations.CheckForNull;
3030
import edu.umd.cs.findbugs.annotations.Nullable;
31+
import hudson.Extension;
3132
import org.jenkinsci.plugins.pipeline.modeldefinition.agent.DeclarativeAgent;
3233
import org.jenkinsci.plugins.pipeline.modeldefinition.options.DeclarativeOption;
34+
import org.jenkinsci.plugins.workflow.cps.GroovySourceFileAllowlist;
3335
import org.kohsuke.stapler.DataBoundSetter;
3436

3537
public abstract class AbstractDockerAgent<D extends AbstractDockerAgent<D>> extends DeclarativeAgent<D> {
@@ -123,4 +125,18 @@ public boolean reuseRootAgent(Map<String, DeclarativeOption> options) {
123125
return options.get(ContainerPerStage.SYMBOL) != null;
124126
}
125127

128+
/**
129+
* AbstractDockerPipelineScript.groovy is a superclass of the Groovy scripts for subclasses of
130+
* {@link AbstractDockerAgent}, but does not have any direct equivalent Java class, so we just allow it here.
131+
*/
132+
@Extension
133+
public static class ChangelogConditionalScriptAllowlist extends GroovySourceFileAllowlist {
134+
private final String scriptUrl = AbstractDockerAgent.class.getResource("AbstractDockerPipelineScript.groovy").toString();
135+
136+
@Override
137+
public boolean isAllowed(String groovyResourceUrl) {
138+
return groovyResourceUrl.equals(scriptUrl);
139+
}
140+
}
141+
126142
}

src/test/java/org/jenkinsci/plugins/docker/workflow/FromFingerprintStepTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ public class FromFingerprintStepTest {
5454
String script = "node {\n" +
5555
" sh 'mkdir buildWithFROMArgs'\n" +
5656
" writeFile file: 'Dockerfile', text: '" + dockerFile + "'\n" +
57+
" withEnv(['DOCKER_BUILDKIT=0']) {\n" +
5758
" def built = docker.build('my-tag') \n" +
5859
" dockerFingerprintFrom dockerfile: 'Dockerfile', image: 'my-tag' \n" +
5960
" echo \"built ${built.id}\"\n" +
61+
" }\n" +
6062
"}";
6163

6264
assertBuild("build", script, BUSYBOX_IMAGE);

src/test/resources/org/jenkinsci/plugins/docker/workflow/declarative/dockerPullLocalImage.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ pipeline {
2727
stages {
2828
stage("build image") {
2929
steps {
30-
sh 'docker build -t maven:3-alpine .'
30+
sh 'docker build -t maven:3-jdk-8-slim .'
3131
}
3232
}
3333
stage("in built image") {
3434
agent {
3535
docker {
36-
image "maven:3-alpine"
36+
image "maven:3-jdk-8-slim"
3737
args "-v /tmp:/tmp"
3838
reuseNode true
3939
}
@@ -46,7 +46,7 @@ pipeline {
4646
stage("in pulled image") {
4747
agent {
4848
docker {
49-
image "maven:3-alpine"
49+
image "maven:3-jdk-8-slim"
5050
alwaysPull true
5151
}
5252
}

0 commit comments

Comments
 (0)