Skip to content

Commit 72352f0

Browse files
configurable docker command via env vars
1 parent 3594940 commit 72352f0

File tree

4 files changed

+14
-4
lines changed

4 files changed

+14
-4
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,10 @@ public Execution() {
196196
volumes.put(tmp, tmp);
197197
}
198198

199-
String command = launcher.isUnix() ? "cat" : "cmd.exe";
199+
String[] command = launcher.isUnix() ? DockerClient.getUnixCommand(envHost, "cat") : "cmd.exe".split(" ");
200200
container = dockerClient.run(env, step.image, step.args, ws, volumes, volumesFromContainers, envReduced, dockerClient.whoAmI(), /* expected to hang until killed */ command);
201201
final List<String> ps = dockerClient.listProcess(env, container);
202-
if (!ps.contains(command)) {
202+
if (!ps.contains(Arrays.toString(command))) {
203203
listener.error(
204204
"The container started but didn't run the expected command. " +
205205
"Please double check your ENTRYPOINT does execute the command passed as docker run argument, " +

src/main/java/org/jenkinsci/plugins/docker/workflow/client/DockerClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ public class DockerClient {
9090
private final @CheckForNull Node node;
9191
private final @CheckForNull String toolName;
9292

93+
public static String[] getUnixCommand(EnvVars env, String defaultCmd) {
94+
return env.get("DEFAULT_DOCKER_COMMAND", defaultCmd).split(" ");
95+
}
96+
9397
public DockerClient(@NonNull Launcher launcher, @CheckForNull Node node, @CheckForNull String toolName) {
9498
this.launcher = launcher;
9599
this.node = node;

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ public static EnvVars newDockerLaunchEnv() {
8484
return env;
8585
}
8686

87+
public static EnvVars newHostEnv() {
88+
EnvVars env = new EnvVars();
89+
env.put("DEFAULT_DOCKER_COMMAND", "sh -c sleep INF");
90+
return env;
91+
}
92+
8793
private DockerTestUtil() {}
88-
8994
}

src/test/java/org/jenkinsci/plugins/docker/workflow/client/DockerClientTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,10 @@ public void setup() throws Exception {
5858
@Test
5959
public void test_run() throws IOException, InterruptedException {
6060
EnvVars launchEnv = DockerTestUtil.newDockerLaunchEnv();
61+
String[] defaultCommand = DockerClient.getUnixCommand(DockerTestUtil.newHostEnv(), "cat");
6162
String containerId =
6263
dockerClient.run(launchEnv, "learn/tutorial", null, null, Collections.<String, String>emptyMap(), Collections.<String>emptyList(), new EnvVars(),
63-
dockerClient.whoAmI(), "cat");
64+
dockerClient.whoAmI(), defaultCommand);
6465
Assert.assertEquals(64, containerId.length());
6566
ContainerRecord containerRecord = dockerClient.getContainerRecord(launchEnv, containerId);
6667
Assert.assertEquals(dockerClient.inspect(launchEnv, "learn/tutorial", ".Id"), containerRecord.getImageId());

0 commit comments

Comments
 (0)