Skip to content

Commit

Permalink
Dont' buffer docker-compose output in jenkins
Browse files Browse the repository at this point in the history
  • Loading branch information
suryagaddipati committed Jan 6, 2016
1 parent 16ce1a4 commit 8b13609
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 14 deletions.
Expand Up @@ -24,19 +24,22 @@

package com.groupon.jenkins.buildtype.dockercompose;

import com.google.common.escape.Escaper;
import com.google.common.escape.Escapers;
import com.groupon.jenkins.buildtype.plugins.DotCiPluginAdapter;
import com.groupon.jenkins.buildtype.util.shell.ShellCommands;
import com.groupon.jenkins.extensions.DotCiExtensionsHelper;
import com.google.common.escape.Escaper;
import com.google.common.escape.Escapers;
import com.groupon.jenkins.git.*;
import com.groupon.jenkins.git.GitUrl;
import com.groupon.jenkins.notifications.PostBuildNotifier;
import hudson.matrix.Axis;
import hudson.matrix.AxisList;
import hudson.matrix.Combination;

import java.util.*;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static java.lang.String.format;

public class BuildConfiguration {
Expand Down Expand Up @@ -82,13 +85,8 @@ public ShellCommands getCommands(Combination combination, Map<String, Object> do
shellCommands.add(String.format("docker-compose -f %s pull",fileName));
if (config.get("run") != null) {
Map runConfig = (Map) config.get("run");
Object dockerComposeCommand = runConfig.get(dockerComposeContainerName);
if (dockerComposeCommand != null ) {
shellCommands.add(String.format("docker-compose -f %s run -T %s %s", fileName, dockerComposeContainerName,SHELL_ESCAPE.escape((String) dockerComposeCommand)));
}
else {
shellCommands.add(String.format("docker-compose -f %s run -T %s",fileName,dockerComposeContainerName));
}
String dockerComposeRunCommand = getDockerComposeRunCommand(dockerComposeContainerName, fileName, runConfig);
shellCommands.add(format("hash unbuffer >/dev/null 2>&1 && unbuffer %s || %s",dockerComposeRunCommand,dockerComposeRunCommand));
}
extractWorkingDirIntoWorkSpace(dockerComposeContainerName, projectName, shellCommands);

Expand All @@ -101,6 +99,16 @@ public ShellCommands getCommands(Combination combination, Map<String, Object> do
return shellCommands;
}

private String getDockerComposeRunCommand(String dockerComposeContainerName, String fileName, Map runConfig) {
Object dockerComposeCommand = runConfig.get(dockerComposeContainerName);
if (dockerComposeCommand != null ) {
return String.format("docker-compose -f %s run -T %s %s", fileName, dockerComposeContainerName,SHELL_ESCAPE.escape((String) dockerComposeCommand));
}
else {
return String.format("docker-compose -f %s run %s ",fileName,dockerComposeContainerName);
}
}

private void extractWorkingDirIntoWorkSpace(String dockerComposeContainerName, String projectName, ShellCommands shellCommands) {
if (config.get("plugins") != null) {
shellCommands.add(getCopyWorkDirIntoWorkspaceCommands(dockerComposeContainerName, projectName));
Expand Down
Expand Up @@ -59,7 +59,7 @@ public void should_pull_latest_image_from_registry(){
@Test
public void should_run_cmd_from_ci_yml(){
ShellCommands commands = getRunCommands();
Assert.assertEquals("docker-compose -f docker-compose.yml run -T unit command",commands.get(7));
Assert.assertEquals("hash unbuffer >/dev/null 2>&1 && unbuffer docker-compose -f docker-compose.yml run -T unit command || docker-compose -f docker-compose.yml run -T unit command",commands.get(7));
}

@Test
Expand Down Expand Up @@ -97,7 +97,7 @@ public void should_accept_alternative_docker_compose_file(){
ShellCommands commands = getRunCommands(ImmutableMap.of("docker-compose-file", "./jenkins/docker-compose.yml", "run", of("unit", "command")));
Assert.assertEquals("trap \"docker-compose -f ./jenkins/docker-compose.yml kill; docker-compose -f ./jenkins/docker-compose.yml rm -v --force; exit\" PIPE QUIT INT HUP EXIT TERM",commands.get(5));
Assert.assertEquals("docker-compose -f ./jenkins/docker-compose.yml pull",commands.get(6));
Assert.assertEquals("docker-compose -f ./jenkins/docker-compose.yml run -T unit command",commands.get(7));
Assert.assertEquals("hash unbuffer >/dev/null 2>&1 && unbuffer docker-compose -f ./jenkins/docker-compose.yml run -T unit command || docker-compose -f ./jenkins/docker-compose.yml run -T unit command",commands.get(7));
}
@Test
public void should_be_skipped_if_skip_specified(){
Expand Down

0 comments on commit 8b13609

Please sign in to comment.