Skip to content

Commit b97325d

Browse files
author
Marcus Linke
committed
Merge branch 'orzeh-master't push origin master
2 parents b18125c + 033caf8 commit b97325d

6 files changed

Lines changed: 32 additions & 73 deletions

File tree

src/main/java/com/github/dockerjava/core/dockerfile/Dockerfile.java

Lines changed: 8 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.github.dockerjava.core.util.FilePathUtil;
66
import com.github.dockerjava.core.GoLangFileMatch;
77
import com.github.dockerjava.core.exception.GoLangFileMatchException;
8-
import com.github.dockerjava.core.GoLangMatchFileFilter;
98
import com.google.common.base.Function;
109
import com.google.common.base.Objects;
1110
import com.google.common.base.Optional;
@@ -21,9 +20,7 @@
2120
import java.io.InputStream;
2221
import java.util.ArrayList;
2322
import java.util.Collection;
24-
import java.util.HashMap;
2523
import java.util.List;
26-
import java.util.Map;
2724
import java.util.UUID;
2825

2926
/**
@@ -115,8 +112,6 @@ public class ScannedResult {
115112

116113
final List<String> ignores;
117114

118-
final Map<String, String> environmentMap = new HashMap<String, String>();
119-
120115
final List<File> filesToAdd = new ArrayList<File>();
121116

122117
public InputStream buildDockerFolderTar() {
@@ -162,8 +157,7 @@ public void close() throws IOException {
162157

163158
@Override
164159
public String toString() {
165-
return Objects.toStringHelper(this).add("ignores", ignores).add("environmentMap", environmentMap)
166-
.add("filesToAdd", filesToAdd).toString();
160+
return Objects.toStringHelper(this).add("ignores", ignores).add("filesToAdd", filesToAdd).toString();
167161
}
168162

169163
public ScannedResult() throws IOException {
@@ -172,18 +166,17 @@ public ScannedResult() throws IOException {
172166

173167
String matchingIgnorePattern = effectiveMatchingIgnorePattern(dockerFile);
174168

175-
if (matchingIgnorePattern == null) {
176-
filesToAdd.add(dockerFile);
177-
} else {
169+
if (matchingIgnorePattern != null) {
178170
throw new DockerClientException(String.format(
179171
"Dockerfile is excluded by pattern '%s' in .dockerignore file", matchingIgnorePattern));
180172
}
181173

182-
for (DockerfileStatement statement : getStatements()) {
183-
if (statement instanceof DockerfileStatement.Env) {
184-
processEnvStatement((DockerfileStatement.Env) statement);
185-
} else if (statement instanceof DockerfileStatement.Add) {
186-
processAddStatement((DockerfileStatement.Add) statement);
174+
Collection<File> filesInBuildContext = FileUtils.listFiles(getDockerFolder(), TrueFileFilter.INSTANCE,
175+
TrueFileFilter.INSTANCE);
176+
177+
for (File f : filesInBuildContext) {
178+
if (effectiveMatchingIgnorePattern(f) == null) {
179+
filesToAdd.add(f);
187180
}
188181
}
189182
}
@@ -238,62 +231,5 @@ private String effectiveMatchingIgnorePattern(File file) {
238231

239232
return lastMatchingPattern;
240233
}
241-
242-
private void processAddStatement(DockerfileStatement.Add add) throws IOException {
243-
244-
add = add.transform(environmentMap);
245-
246-
for (String resource : add.getFileResources()) {
247-
248-
File dockerFolder = getDockerFolder();
249-
250-
File src = new File(resource);
251-
if (!src.isAbsolute()) {
252-
src = new File(dockerFolder, resource);
253-
} else {
254-
throw new DockerClientException(String.format("Source file %s must be relative to %s", src,
255-
dockerFolder));
256-
}
257-
258-
if (src.exists()) {
259-
src = src.getCanonicalFile();
260-
if (src.isDirectory()) {
261-
Collection<File> files = FileUtils.listFiles(src, new GoLangMatchFileFilter(src, ignores),
262-
TrueFileFilter.INSTANCE);
263-
filesToAdd.addAll(files);
264-
} else if (effectiveMatchingIgnorePattern(src) == null) {
265-
filesToAdd.add(src);
266-
} else {
267-
throw new DockerClientException(String.format(
268-
"Source file %s is excluded by .dockerignore file", src));
269-
}
270-
} else {
271-
filesToAdd.addAll(resolveWildcards(src, ignores));
272-
}
273-
}
274-
}
275-
276-
private Collection<File> resolveWildcards(File file, List<String> ignores) {
277-
List<File> filesToAdd = new ArrayList<File>();
278-
279-
File parent = file.getParentFile();
280-
if (parent != null) {
281-
if (parent.isDirectory()) {
282-
Collection<File> files = FileUtils.listFiles(parent, new GoLangMatchFileFilter(parent, ignores),
283-
TrueFileFilter.INSTANCE);
284-
filesToAdd.addAll(files);
285-
} else {
286-
filesToAdd.addAll(resolveWildcards(parent, ignores));
287-
}
288-
} else {
289-
throw new DockerClientException(String.format("Source file %s doesn't exist", file));
290-
}
291-
292-
return filesToAdd;
293-
}
294-
295-
private void processEnvStatement(DockerfileStatement.Env env) {
296-
environmentMap.put(env.variable, env.value);
297-
}
298234
}
299235
}

src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,17 @@ public void testDockerBuilderFromTar() throws Exception {
100100
assertThat(response, containsString("Successfully executed testrun.sh"));
101101
}
102102

103+
@Test
104+
public void testDockerBuildWithOnBuild() throws Exception {
105+
File baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("testAddOnBuild/onbuild")
106+
.getFile());
107+
dockerClient.buildImageCmd(baseDir).withNoCache(true).withTag("docker-java-onbuild")
108+
.exec(new BuildImageResultCallback()).awaitImageId();
109+
baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("testAddOnBuild/test").getFile());
110+
String response = dockerfileBuild(baseDir);
111+
assertThat(response, containsString("Successfully executed testrun.sh"));
112+
}
113+
103114
@Test
104115
public void testDockerBuilderAddUrl() throws Exception {
105116
File baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("testAddUrl").getFile());
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM ubuntu:latest
2+
3+
# Copy testrun.sh files into the container
4+
5+
ONBUILD ADD ./testrun.sh /tmp/
6+
ONBUILD RUN cp /tmp/testrun.sh /usr/local/bin/ && chmod +x /usr/local/bin/testrun.sh
7+
8+
CMD ["testrun.sh"]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
FROM docker-java-onbuild
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/sh
2+
3+
echo "Successfully executed testrun.sh"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
b
1+
*/b

0 commit comments

Comments
 (0)