diff --git a/src/main/java/com/cloudbees/jenkins/plugins/docker_build_env/Docker.java b/src/main/java/com/cloudbees/jenkins/plugins/docker_build_env/Docker.java
index dd842c3..ab0c71c 100644
--- a/src/main/java/com/cloudbees/jenkins/plugins/docker_build_env/Docker.java
+++ b/src/main/java/com/cloudbees/jenkins/plugins/docker_build_env/Docker.java
@@ -7,6 +7,7 @@
import hudson.model.Computer;
import hudson.model.TaskListener;
import hudson.util.ArgumentListBuilder;
+import jenkins.model.Jenkins;
import org.apache.commons.io.LineIterator;
import org.apache.commons.io.output.TeeOutputStream;
import org.apache.commons.lang.StringUtils;
@@ -255,11 +256,16 @@ private String getDocker0Ip(Launcher launcher, String image) throws IOException,
// On some distributions, docker doesn't start docker0 bridge until a container do require it
// So let's run the container once, running /bin/true so it terminates immediately
+ DockerBuildWrapper.DescriptorImpl descriptor = (DockerBuildWrapper.DescriptorImpl)
+ Jenkins.getInstance().getDescriptor(DockerBuildWrapper.class);
+
+ final String initImage = descriptor.getInitImage();
+
ArgumentListBuilder args = dockerCommand()
.add("run", "--rm")
.add("--entrypoint")
.add("/bin/true")
- .add("alpine:3.6");
+ .add(initImage);
int status = launcher.launch()
.envs(getEnvVars())
@@ -290,7 +296,7 @@ private String getDocker0Ip(Launcher launcher, String image) throws IOException,
.add("run", "--tty", "--rm")
.add("--entrypoint")
.add("/sbin/ip")
- .add("alpine:3.6")
+ .add(initImage)
.add("route");
ByteArrayOutputStream out = new ByteArrayOutputStream();
diff --git a/src/main/java/com/cloudbees/jenkins/plugins/docker_build_env/DockerBuildWrapper.java b/src/main/java/com/cloudbees/jenkins/plugins/docker_build_env/DockerBuildWrapper.java
index fec43d3..fce20e4 100644
--- a/src/main/java/com/cloudbees/jenkins/plugins/docker_build_env/DockerBuildWrapper.java
+++ b/src/main/java/com/cloudbees/jenkins/plugins/docker_build_env/DockerBuildWrapper.java
@@ -7,6 +7,7 @@
import hudson.EnvVars;
import hudson.Extension;
import hudson.Launcher;
+import hudson.Util;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
@@ -18,16 +19,20 @@
import hudson.remoting.Callable;
import hudson.tasks.BuildWrapper;
import hudson.tasks.BuildWrapperDescriptor;
+import hudson.util.FormValidation;
import hudson.util.ListBoxModel;
import jenkins.authentication.tokens.api.AuthenticationTokens;
import jenkins.model.Jenkins;
import jenkins.security.MasterToSlaveCallable;
+import net.sf.json.JSONObject;
import org.jenkinsci.plugins.docker.commons.credentials.DockerRegistryToken;
import org.jenkinsci.plugins.docker.commons.credentials.DockerServerEndpoint;
import org.kohsuke.stapler.AncestorInPath;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter;
+import org.kohsuke.stapler.StaplerRequest;
+import javax.servlet.ServletException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
@@ -259,6 +264,36 @@ private String whoAmI(Launcher launcher) throws IOException, InterruptedExceptio
@Extension
public static class DescriptorImpl extends BuildWrapperDescriptor {
+ private String initImage;
+
+ public DescriptorImpl(){
+ super(DockerBuildWrapper.class);
+ load();
+ }
+
+ @Override
+ public boolean configure(StaplerRequest req, JSONObject json) throws FormException {
+ req.bindParameters(this);
+ String paramValue = json.getString("initImage");
+ this.initImage = !paramValue.trim().isEmpty() ? paramValue : "alpine:3.6";
+ save();
+ return super.configure(req,json);
+ }
+
+ public String getInitImage() {
+ return initImage;
+ }
+
+ public void setInitImage(String initImage) {
+ this.initImage = initImage;
+ }
+
+ public FormValidation doCheckInitImage(@QueryParameter String initImage) throws IOException, ServletException {
+ if (Util.fixEmptyAndTrim(initImage) == null)
+ return FormValidation.error("Please set a Init Image name. Default: alpine:3.6");
+ return FormValidation.ok();
+ }
+
@Override
public String getDisplayName() {
return "Build inside a Docker container";
diff --git a/src/main/resources/com/cloudbees/jenkins/plugins/docker_build_env/DockerBuildWrapper/global.jelly b/src/main/resources/com/cloudbees/jenkins/plugins/docker_build_env/DockerBuildWrapper/global.jelly
new file mode 100644
index 0000000..0144887
--- /dev/null
+++ b/src/main/resources/com/cloudbees/jenkins/plugins/docker_build_env/DockerBuildWrapper/global.jelly
@@ -0,0 +1,32 @@
+
+
+
+
DEFAULT: `alpine:3.6` (since it has a size of 2MB). +