diff --git a/1.554.1/Dockerfile b/1.554.1/Dockerfile
deleted file mode 100644
index bd9c3be..0000000
--- a/1.554.1/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.554.1
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war-stable/1.554.1/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.554.1/init.groovy b/1.554.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.554.1/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.554.1/jenkins.sh b/1.554.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.554.1/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.554.1/plugins.sh b/1.554.1/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.554.1/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.554.2/Dockerfile b/1.554.2/Dockerfile
deleted file mode 100644
index 1bec7d9..0000000
--- a/1.554.2/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.554.2
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war-stable/1.554.2/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.554.2/init.groovy b/1.554.2/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.554.2/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.554.2/jenkins.sh b/1.554.2/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.554.2/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.554.2/plugins.sh b/1.554.2/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.554.2/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.554.3/Dockerfile b/1.554.3/Dockerfile
deleted file mode 100644
index 5233dbe..0000000
--- a/1.554.3/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.554.3
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war-stable/1.554.3/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.554.3/init.groovy b/1.554.3/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.554.3/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.554.3/jenkins.sh b/1.554.3/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.554.3/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.554.3/plugins.sh b/1.554.3/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.554.3/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.555/Dockerfile b/1.555/Dockerfile
deleted file mode 100644
index 5b2f1b8..0000000
--- a/1.555/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.555
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.555/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.555/init.groovy b/1.555/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.555/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.555/jenkins.sh b/1.555/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.555/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.555/plugins.sh b/1.555/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.555/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.556/Dockerfile b/1.556/Dockerfile
deleted file mode 100644
index f78169f..0000000
--- a/1.556/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.556
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.556/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.556/init.groovy b/1.556/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.556/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.556/jenkins.sh b/1.556/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.556/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.556/plugins.sh b/1.556/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.556/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.557/Dockerfile b/1.557/Dockerfile
deleted file mode 100644
index d3d774d..0000000
--- a/1.557/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.557
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.557/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.557/init.groovy b/1.557/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.557/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.557/jenkins.sh b/1.557/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.557/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.557/plugins.sh b/1.557/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.557/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.558/Dockerfile b/1.558/Dockerfile
deleted file mode 100644
index e71e77f..0000000
--- a/1.558/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.558
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.558/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.558/init.groovy b/1.558/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.558/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.558/jenkins.sh b/1.558/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.558/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.558/plugins.sh b/1.558/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.558/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.559/Dockerfile b/1.559/Dockerfile
deleted file mode 100644
index 27a2433..0000000
--- a/1.559/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.559
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.559/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.559/init.groovy b/1.559/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.559/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.559/jenkins.sh b/1.559/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.559/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.559/plugins.sh b/1.559/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.559/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.560/Dockerfile b/1.560/Dockerfile
deleted file mode 100644
index 6c978ea..0000000
--- a/1.560/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.560
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.560/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.560/init.groovy b/1.560/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.560/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.560/jenkins.sh b/1.560/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.560/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.560/plugins.sh b/1.560/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.560/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.561/Dockerfile b/1.561/Dockerfile
deleted file mode 100644
index f67a4a2..0000000
--- a/1.561/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.561
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.561/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.561/init.groovy b/1.561/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.561/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.561/jenkins.sh b/1.561/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.561/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.561/plugins.sh b/1.561/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.561/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.562/Dockerfile b/1.562/Dockerfile
deleted file mode 100644
index 6a78367..0000000
--- a/1.562/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.562
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.562/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.562/init.groovy b/1.562/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.562/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.562/jenkins.sh b/1.562/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.562/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.562/plugins.sh b/1.562/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.562/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.563/Dockerfile b/1.563/Dockerfile
deleted file mode 100644
index 3296188..0000000
--- a/1.563/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.563
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.563/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.563/init.groovy b/1.563/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.563/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.563/jenkins.sh b/1.563/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.563/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.563/plugins.sh b/1.563/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.563/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.564/Dockerfile b/1.564/Dockerfile
deleted file mode 100644
index 1c56760..0000000
--- a/1.564/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.564
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.564/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.564/init.groovy b/1.564/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.564/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.564/jenkins.sh b/1.564/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.564/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.564/plugins.sh b/1.564/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.564/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.565.1/init.groovy b/1.565.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.565.1/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.565.1/jenkins.sh b/1.565.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.565.1/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.565.1/plugins.sh b/1.565.1/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.565.1/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.565.2/Dockerfile b/1.565.2/Dockerfile
deleted file mode 100644
index 9fbac83..0000000
--- a/1.565.2/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.565.2
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war-stable/1.565.2/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.565.2/init.groovy b/1.565.2/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.565.2/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.565.2/jenkins.sh b/1.565.2/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.565.2/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.565.2/plugins.sh b/1.565.2/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.565.2/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.565.3/Dockerfile b/1.565.3/Dockerfile
deleted file mode 100644
index 0205219..0000000
--- a/1.565.3/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.565.3
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war-stable/1.565.3/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.565.3/init.groovy b/1.565.3/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.565.3/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.565.3/jenkins.sh b/1.565.3/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.565.3/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.565.3/plugins.sh b/1.565.3/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.565.3/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.565/Dockerfile b/1.565/Dockerfile
deleted file mode 100644
index 4966122..0000000
--- a/1.565/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.565
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.565/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.565/init.groovy b/1.565/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.565/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.565/jenkins.sh b/1.565/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.565/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.565/plugins.sh b/1.565/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.565/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.566/Dockerfile b/1.566/Dockerfile
deleted file mode 100644
index 4c7e91d..0000000
--- a/1.566/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.566
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.566/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.566/init.groovy b/1.566/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.566/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.566/jenkins.sh b/1.566/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.566/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.566/plugins.sh b/1.566/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.566/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.567/Dockerfile b/1.567/Dockerfile
deleted file mode 100644
index c854b24..0000000
--- a/1.567/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.567
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.567/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.567/init.groovy b/1.567/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.567/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.567/jenkins.sh b/1.567/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.567/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.567/plugins.sh b/1.567/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.567/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.568/Dockerfile b/1.568/Dockerfile
deleted file mode 100644
index 87a3fad..0000000
--- a/1.568/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.568
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.568/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.568/init.groovy b/1.568/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.568/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.568/jenkins.sh b/1.568/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.568/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.568/plugins.sh b/1.568/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.568/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.569/Dockerfile b/1.569/Dockerfile
deleted file mode 100644
index 67693f4..0000000
--- a/1.569/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.569
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.569/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.569/init.groovy b/1.569/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.569/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.569/jenkins.sh b/1.569/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.569/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.569/plugins.sh b/1.569/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.569/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.570/Dockerfile b/1.570/Dockerfile
deleted file mode 100644
index cc5a6c9..0000000
--- a/1.570/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.570
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.570/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.570/init.groovy b/1.570/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.570/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.570/jenkins.sh b/1.570/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.570/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.570/plugins.sh b/1.570/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.570/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.571/Dockerfile b/1.571/Dockerfile
deleted file mode 100644
index 1d6af71..0000000
--- a/1.571/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.571
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.571/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.571/init.groovy b/1.571/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.571/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.571/jenkins.sh b/1.571/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.571/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.571/plugins.sh b/1.571/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.571/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.572/Dockerfile b/1.572/Dockerfile
deleted file mode 100644
index 4abff58..0000000
--- a/1.572/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.572
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.572/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.572/init.groovy b/1.572/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.572/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.572/jenkins.sh b/1.572/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.572/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.572/plugins.sh b/1.572/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.572/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.573/Dockerfile b/1.573/Dockerfile
deleted file mode 100644
index 0e3bdd8..0000000
--- a/1.573/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.573
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.573/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.573/init.groovy b/1.573/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.573/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.573/jenkins.sh b/1.573/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.573/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.573/plugins.sh b/1.573/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.573/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.574/Dockerfile b/1.574/Dockerfile
deleted file mode 100644
index feadddc..0000000
--- a/1.574/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.574
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.574/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.574/init.groovy b/1.574/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.574/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.574/jenkins.sh b/1.574/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.574/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.574/plugins.sh b/1.574/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.574/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.575/Dockerfile b/1.575/Dockerfile
deleted file mode 100644
index a5339ba..0000000
--- a/1.575/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.575
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.575/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.575/init.groovy b/1.575/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.575/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.575/jenkins.sh b/1.575/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.575/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.575/plugins.sh b/1.575/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.575/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.576/Dockerfile b/1.576/Dockerfile
deleted file mode 100644
index 8786888..0000000
--- a/1.576/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.576
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.576/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.576/init.groovy b/1.576/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.576/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.576/jenkins.sh b/1.576/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.576/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.576/plugins.sh b/1.576/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.576/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.577/Dockerfile b/1.577/Dockerfile
deleted file mode 100644
index cb70f99..0000000
--- a/1.577/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.577
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.577/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.577/init.groovy b/1.577/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.577/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.577/jenkins.sh b/1.577/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.577/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.577/plugins.sh b/1.577/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.577/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.578/Dockerfile b/1.578/Dockerfile
deleted file mode 100644
index 6994285..0000000
--- a/1.578/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.578
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.578/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.578/init.groovy b/1.578/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.578/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.578/jenkins.sh b/1.578/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.578/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.578/plugins.sh b/1.578/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.578/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.579/Dockerfile b/1.579/Dockerfile
deleted file mode 100644
index 1eb3fac..0000000
--- a/1.579/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.579
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.579/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.579/init.groovy b/1.579/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.579/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.579/jenkins.sh b/1.579/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.579/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.579/plugins.sh b/1.579/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.579/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.580.1/Dockerfile b/1.580.1/Dockerfile
deleted file mode 100644
index 4e4462c..0000000
--- a/1.580.1/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.580.1
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war-stable/1.580.1/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.580.1/init.groovy b/1.580.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.580.1/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.580.1/jenkins.sh b/1.580.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.580.1/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.580.1/plugins.sh b/1.580.1/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.580.1/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.580.2/Dockerfile b/1.580.2/Dockerfile
deleted file mode 100644
index 649506a..0000000
--- a/1.580.2/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.580.2
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war-stable/1.580.2/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.580.2/init.groovy b/1.580.2/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.580.2/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.580.2/jenkins.sh b/1.580.2/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.580.2/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.580.2/plugins.sh b/1.580.2/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.580.2/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.580/Dockerfile b/1.580/Dockerfile
deleted file mode 100644
index bf51beb..0000000
--- a/1.580/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.580
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.580/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.580/init.groovy b/1.580/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.580/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.580/jenkins.sh b/1.580/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.580/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.580/plugins.sh b/1.580/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.580/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.581/Dockerfile b/1.581/Dockerfile
deleted file mode 100644
index 742172f..0000000
--- a/1.581/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.581
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.581/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.581/init.groovy b/1.581/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.581/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.581/jenkins.sh b/1.581/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.581/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.581/plugins.sh b/1.581/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.581/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.582/Dockerfile b/1.582/Dockerfile
deleted file mode 100644
index 62e5b86..0000000
--- a/1.582/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.582
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.582/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.582/init.groovy b/1.582/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.582/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.582/jenkins.sh b/1.582/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.582/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.582/plugins.sh b/1.582/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.582/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.583/Dockerfile b/1.583/Dockerfile
deleted file mode 100644
index 8436cb4..0000000
--- a/1.583/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.583
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.583/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.583/init.groovy b/1.583/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.583/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.583/jenkins.sh b/1.583/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.583/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.583/plugins.sh b/1.583/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.583/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.584/Dockerfile b/1.584/Dockerfile
deleted file mode 100644
index ca1e797..0000000
--- a/1.584/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.584
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.584/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.584/init.groovy b/1.584/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.584/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.584/jenkins.sh b/1.584/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.584/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.584/plugins.sh b/1.584/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.584/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.585/Dockerfile b/1.585/Dockerfile
deleted file mode 100644
index eb037a8..0000000
--- a/1.585/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.585
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.585/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.585/init.groovy b/1.585/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.585/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.585/jenkins.sh b/1.585/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.585/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.585/plugins.sh b/1.585/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.585/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.586/Dockerfile b/1.586/Dockerfile
deleted file mode 100644
index cd45b53..0000000
--- a/1.586/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.586
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.586/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.586/init.groovy b/1.586/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.586/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.586/jenkins.sh b/1.586/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.586/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.586/plugins.sh b/1.586/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.586/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.587/Dockerfile b/1.587/Dockerfile
deleted file mode 100644
index 11747b6..0000000
--- a/1.587/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.587
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.587/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.587/init.groovy b/1.587/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.587/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.587/jenkins.sh b/1.587/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.587/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.587/plugins.sh b/1.587/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.587/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.588/Dockerfile b/1.588/Dockerfile
deleted file mode 100644
index 8948dc3..0000000
--- a/1.588/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.588
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.588/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.588/init.groovy b/1.588/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.588/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.588/jenkins.sh b/1.588/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.588/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.588/plugins.sh b/1.588/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.588/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.589/Dockerfile b/1.589/Dockerfile
deleted file mode 100644
index 4496c18..0000000
--- a/1.589/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.589
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.589/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.589/init.groovy b/1.589/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.589/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.589/jenkins.sh b/1.589/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.589/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.589/plugins.sh b/1.589/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.589/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.590/Dockerfile b/1.590/Dockerfile
deleted file mode 100644
index 6977ac0..0000000
--- a/1.590/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.590
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.590/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.590/init.groovy b/1.590/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.590/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.590/jenkins.sh b/1.590/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.590/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.590/plugins.sh b/1.590/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.590/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.591/Dockerfile b/1.591/Dockerfile
deleted file mode 100644
index cf3322a..0000000
--- a/1.591/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.591
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.591/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.591/init.groovy b/1.591/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.591/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.591/jenkins.sh b/1.591/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.591/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.591/plugins.sh b/1.591/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.591/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.592/Dockerfile b/1.592/Dockerfile
deleted file mode 100644
index 743483d..0000000
--- a/1.592/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.592
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.592/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.592/init.groovy b/1.592/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.592/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.592/jenkins.sh b/1.592/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.592/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.592/plugins.sh b/1.592/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.592/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.593/Dockerfile b/1.593/Dockerfile
deleted file mode 100644
index d4ddaa6..0000000
--- a/1.593/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.593
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.593/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.593/init.groovy b/1.593/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.593/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.593/jenkins.sh b/1.593/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.593/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.593/plugins.sh b/1.593/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.593/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.594/Dockerfile b/1.594/Dockerfile
deleted file mode 100644
index 086a88d..0000000
--- a/1.594/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.594
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.594/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.594/init.groovy b/1.594/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.594/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.594/jenkins.sh b/1.594/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.594/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.594/plugins.sh b/1.594/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.594/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.595/Dockerfile b/1.595/Dockerfile
deleted file mode 100644
index 6c73aba..0000000
--- a/1.595/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.595
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.595/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.595/init.groovy b/1.595/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.595/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.595/jenkins.sh b/1.595/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.595/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.595/plugins.sh b/1.595/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.595/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.596/Dockerfile b/1.596/Dockerfile
deleted file mode 100644
index f9080a7..0000000
--- a/1.596/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.596
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war/1.596/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.596/init.groovy b/1.596/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.596/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.596/jenkins.sh b/1.596/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.596/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.596/plugins.sh b/1.596/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.596/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.565.1/Dockerfile b/Dockerfile
similarity index 89%
rename from 1.565.1/Dockerfile
rename to Dockerfile
index e35cfcd..b7e21bd 100644
--- a/1.565.1/Dockerfile
+++ b/Dockerfile
@@ -19,13 +19,13 @@
 RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
 
 
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
+COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-agent-port.groovy
 
-ENV JENKINS_VERSION 1.565.1
+ENV JENKINS_VERSION 1.596.2
 
 # could use ADD but this one does not check Last-Modified header 
 # see https://github.com/docker/docker/issues/8331
-RUN curl -L http://mirrors.jenkins-ci.org/war-stable/1.565.1/jenkins.war -o /usr/share/jenkins/jenkins.war
+RUN curl -L http://mirrors.jenkins-ci.org/war-stable/$JENKINS_VERSION/jenkins.war -o /usr/share/jenkins/jenkins.war
 
 ENV JENKINS_UC https://updates.jenkins-ci.org
 RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
diff --git a/Dockerfile.template b/Dockerfile.template
deleted file mode 100644
index 7c612e5..0000000
--- a/Dockerfile.template
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION %%JENKINS_VERSION%%
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L %%DOWNLOAD_URL%% -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/README.md b/README.md
index 8110c10..9d9a956 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,7 @@
 variable for this purpose :
 
 ```
-docker run --name myjenkins -p 8080:8080 -env JAVA_OPTS=-Dhudson.footerURL=http://mycompany.com jenkins
+docker run --name myjenkins -p 8080:8080 --env JAVA_OPTS=-Dhudson.footerURL=http://mycompany.com jenkins
 ```
 
 # Passing Jenkins launcher parameters
@@ -86,7 +86,8 @@
 
 ```
 FROM jenkins
-USER root # if we want to install via apt
+# if we want to install via apt
+USER root
 RUN apt-get install -y ruby make more-thing-here
 USER jenkins # drop back to the regular jenkins user - good practice
 ```
diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh
deleted file mode 100755
index a94c3b6..0000000
--- a/generate-stackbrew-library.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/local/Cellar/bash/4.3.30/bin/bash
-set -e
-
-declare -A aliases
-aliases=(
-	[1.596]='weekly'
-	[1.580.2]='latest'
-)
-
-versions=( */ )
-versions=( "${versions[@]%/}" )
-url='git://github.com/cloudbees/jenkins-ci.org-docker'
-
-echo '# maintainer: Nicolas De Loof <nicolas.deloof@gmail.com> (@ndeloof)'
-echo '# maintainer: Michael Neale <mneale@cloudbees.com> (@michaelneale)'
-
-echo
-for version in "${versions[@]}"; do
-	commit="$(git log -1 --format='format:%H' -- "$version")"
-	versionAliases=( $version ${aliases[$version]} )
-	
-	for va in "${versionAliases[@]}"; do
-		echo "$va: ${url}@${commit} $version"
-	done
-done
diff --git a/plugins.sh b/plugins.sh
index e0df32b..df060b3 100755
--- a/plugins.sh
+++ b/plugins.sh
@@ -5,7 +5,7 @@
 # 
 # FROM jenkins
 # COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
+# RUN /usr/local/bin/plugins.sh /plugins.txt
 # 
 
 REF=/usr/share/jenkins/ref/plugins
@@ -13,5 +13,7 @@
 
 while read spec; do
     plugin=(${spec//:/ }); 
+    [[ ${plugin[0]} =~ ^# ]] && continue
+    [[ ${plugin[0]} =~ ^\s*$ ]] && continue
     curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
 done  < $1
diff --git a/stackbrew b/stackbrew
deleted file mode 100644
index 38776bd..0000000
--- a/stackbrew
+++ /dev/null
@@ -1,46 +0,0 @@
-# maintainer: Nicolas De Loof <nicolas.deloof@gmail.com> (@ndeloof)
-# maintainer: Michael Neale <mneale@cloudbees.com> (@michaelneale)
-
-1.554.3: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.554.3
-1.555: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.555
-1.556: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.556
-1.557: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.557
-1.558: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.558
-1.559: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.559
-1.560: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.560
-1.561: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.561
-1.562: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.562
-1.563: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.563
-1.564: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.564
-1.565.3: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.565.3
-1.565: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.565
-1.566: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.566
-1.567: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.567
-1.568: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.568
-1.569: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.569
-1.570: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.570
-1.571: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.571
-1.572: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.572
-1.573: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.573
-1.574: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.574
-1.575: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.575
-1.576: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.576
-1.577: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.577
-1.578: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.578
-1.579: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.579
-1.580.1: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.580.1
-latest: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.580.1
-1.580: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.580
-1.581: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.581
-1.582: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.582
-1.583: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.583
-1.584: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.584
-1.585: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.585
-1.586: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.586
-1.587: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.587
-1.588: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.588
-1.589: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.589
-1.590: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.590
-1.591: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.591
-1.592: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.592
-weekly: git://github.com/cloudbees/jenkins-ci.org-docker@fb6f45422a99da98d35178e7d6d5e25aa74972b0 1.592
diff --git a/update.sh b/update.sh
deleted file mode 100755
index 3e12e06..0000000
--- a/update.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-set -e
-
-versions=( "$@" )
-if [ ${#versions[@]} -eq 0 ]; then
-	versions=( */ )
-fi
-versions=( "${versions[@]%/}" )
-
-for version in "${versions[@]}"; do
-	rm -rf "$version"/*
-	cp Dockerfile.template jenkins.sh plugins.sh init.groovy "$version/"
-	mv "$version/Dockerfile.template" "$version/Dockerfile"
-    case $version in
-    	1\.*\.*) download="http:\/\/mirrors.jenkins-ci.org\/war-stable\/$version\/jenkins.war" ;;
-    	*) download="http:\/\/mirrors.jenkins-ci.org\/war\/$version\/jenkins.war" ;;
-	esac
-
-	sed -i "" 's/%%JENKINS_VERSION%%/'$version'/g; s/%%DOWNLOAD_URL%%/'$download'/g' "$version/Dockerfile"
-done
-
