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 df060b3..0000000
--- a/1.554.1/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.554.2/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.554.3/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.555/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.556/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.557/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.558/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.559/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.560/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.561/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.562/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.563/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.564/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.565.1/Dockerfile b/1.565.1/Dockerfile
deleted file mode 100644
index e35cfcd..0000000
--- a/1.565.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.565.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.565.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.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 df060b3..0000000
--- a/1.565.1/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.565.2/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.565.3/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.565/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.566/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.567/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.568/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.569/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.570/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.571/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.572/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.573/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.574/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.575/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.576/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.577/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.578/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.579/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.580.1/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.580.2/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.580.3/Dockerfile b/1.580.3/Dockerfile
deleted file mode 100644
index ebfed53..0000000
--- a/1.580.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.580.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.580.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.580.3/init.groovy b/1.580.3/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.580.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.580.3/jenkins.sh b/1.580.3/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.580.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.580.3/plugins.sh b/1.580.3/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.580.3/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.580/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.581/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.582/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.583/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.584/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.585/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.586/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.587/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.588/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.589/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.590/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.591/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.592/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.593/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.594/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.595/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.596.1/init.groovy b/1.596.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.596.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.596.1/jenkins.sh b/1.596.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.596.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.596.1/plugins.sh b/1.596.1/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.596.1/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/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 df060b3..0000000
--- a/1.596/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.597/Dockerfile b/1.597/Dockerfile
deleted file mode 100644
index 36194f9..0000000
--- a/1.597/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.597
-
-# 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.597/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.597/init.groovy b/1.597/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.597/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.597/jenkins.sh b/1.597/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.597/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.597/plugins.sh b/1.597/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.597/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.598/Dockerfile b/1.598/Dockerfile
deleted file mode 100644
index 25cdce1..0000000
--- a/1.598/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.598
-
-# 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.598/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.598/init.groovy b/1.598/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.598/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.598/jenkins.sh b/1.598/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.598/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.598/plugins.sh b/1.598/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.598/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.599/Dockerfile b/1.599/Dockerfile
deleted file mode 100644
index 9dc211c..0000000
--- a/1.599/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.599
-
-# 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.599/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.599/init.groovy b/1.599/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.599/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.599/jenkins.sh b/1.599/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.599/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.599/plugins.sh b/1.599/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.599/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.600/Dockerfile b/1.600/Dockerfile
deleted file mode 100644
index f79d8f0..0000000
--- a/1.600/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.600
-
-# 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.600/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.600/init.groovy b/1.600/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.600/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.600/jenkins.sh b/1.600/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.600/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.600/plugins.sh b/1.600/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.600/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.601/Dockerfile b/1.601/Dockerfile
deleted file mode 100644
index 9bad14c..0000000
--- a/1.601/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.601
-
-# 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.601/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.601/init.groovy b/1.601/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.601/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.601/jenkins.sh b/1.601/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.601/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.601/plugins.sh b/1.601/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.601/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.602/Dockerfile b/1.602/Dockerfile
deleted file mode 100644
index e93281e..0000000
--- a/1.602/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.602
-
-# 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.602/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.602/init.groovy b/1.602/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.602/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.602/jenkins.sh b/1.602/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.602/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.602/plugins.sh b/1.602/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.602/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.603/Dockerfile b/1.603/Dockerfile
deleted file mode 100644
index a3b088f..0000000
--- a/1.603/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.603
-
-# 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.603/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.603/init.groovy b/1.603/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.603/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.603/jenkins.sh b/1.603/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.603/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.603/plugins.sh b/1.603/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.603/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.604/Dockerfile b/1.604/Dockerfile
deleted file mode 100644
index a414511..0000000
--- a/1.604/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.604
-
-# 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.604/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.604/init.groovy b/1.604/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.604/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.604/jenkins.sh b/1.604/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.604/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.604/plugins.sh b/1.604/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.604/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.605/Dockerfile b/1.605/Dockerfile
deleted file mode 100644
index 68f0d7f..0000000
--- a/1.605/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.605
-
-# 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.605/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.605/init.groovy b/1.605/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.605/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.605/jenkins.sh b/1.605/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.605/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.605/plugins.sh b/1.605/plugins.sh
deleted file mode 100755
index df060b3..0000000
--- a/1.605/plugins.sh
+++ /dev/null
@@ -1,19 +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/local/bin/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-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/1.596.1/Dockerfile b/Dockerfile
similarity index 100%
rename from 1.596.1/Dockerfile
rename to Dockerfile
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/generate-stackbrew-library.sh b/generate-stackbrew-library.sh
deleted file mode 100755
index 4400f44..0000000
--- a/generate-stackbrew-library.sh
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-
-set -e
-shopt -s extglob
-
-declare -A aliases
-aliases=(
-	[1.605]='weekly'
-	[1.596.1]='latest'
-)
-
-versions() {
-	local IFS=$'\n'
-	local versions=( "${@%/}" )
-	sort -Vr <<< "${versions[*]}"
-}
-
-lts_versions=( $(versions *.*.*/) )
-weekly_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
-echo "# group: Current Releases"
-for version in $(IFS=$'\n'; sort -V <<< "${!aliases[*]}"); do
-	commit="$(git log -1 --format='format:%H' -- "$version")"
-	for va in "$version" ${aliases[$version]}; do
-		echo "$va: ${url}@${commit} $version"
-	done
-	echo
-done
-
-echo "# group: Previous LTS Releases"
-for version in "${lts_versions[@]}"; do
-	if [ "${aliases[$version]}" ]; then
-		continue
-	fi
-
-	commit="$(git log -1 --format='format:%H' -- "$version")"
-	echo "$version: ${url}@${commit} $version"
-done
-echo
-
-echo "# group: Previous Weekly Releases"
-for version in "${weekly_versions[@]}"; do
-	if [ "${aliases[$version]}" ]; then
-		continue
-	fi
-
-	commit="$(git log -1 --format='format:%H' -- "$version")"
-	echo "$version: ${url}@${commit} $version"
-done
diff --git a/stackbrew b/stackbrew
deleted file mode 100644
index 264b0df..0000000
--- a/stackbrew
+++ /dev/null
@@ -1,66 +0,0 @@
-# maintainer: Nicolas De Loof <nicolas.deloof@gmail.com> (@ndeloof)
-# maintainer: Michael Neale <mneale@cloudbees.com> (@michaelneale)
-
-1.554.1: git://github.com/cloudbees/jenkins-ci.org-docker@f313389f8ab728d7b4207da36804ea54415c830b 1.554.1
-1.554.2: git://github.com/cloudbees/jenkins-ci.org-docker@f313389f8ab728d7b4207da36804ea54415c830b 1.554.2
-1.554.3: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.554.3
-1.555: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.555
-1.556: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.556
-1.557: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.557
-1.558: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.558
-1.559: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.559
-1.560: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.560
-1.561: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.561
-1.562: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.562
-1.563: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.563
-1.564: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.564
-1.565.1: git://github.com/cloudbees/jenkins-ci.org-docker@f313389f8ab728d7b4207da36804ea54415c830b 1.565.1
-1.565.2: git://github.com/cloudbees/jenkins-ci.org-docker@f313389f8ab728d7b4207da36804ea54415c830b 1.565.2
-1.565.3: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.565.3
-1.565: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.565
-1.566: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.566
-1.567: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.567
-1.568: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.568
-1.569: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.569
-1.570: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.570
-1.571: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.571
-1.572: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.572
-1.573: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.573
-1.574: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.574
-1.575: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.575
-1.576: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.576
-1.577: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.577
-1.578: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.578
-1.579: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.579
-1.580.1: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.580.1
-1.580.2: git://github.com/cloudbees/jenkins-ci.org-docker@c39540d22e2a9c20e691cbdc4c9c54aee77be357 1.580.2
-1.580.3: git://github.com/cloudbees/jenkins-ci.org-docker@b7850f2eba0221a1e2ac72b1ea6ecd8d51e3e558 1.580.3
-1.580: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.580
-1.581: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.581
-1.582: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.582
-1.583: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.583
-1.584: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.584
-1.585: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.585
-1.586: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.586
-1.587: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.587
-1.588: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.588
-1.589: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.589
-1.590: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.590
-1.591: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.591
-1.592: git://github.com/cloudbees/jenkins-ci.org-docker@40c3e3f46939b9f9dcf8d46e62fa7daa80485588 1.592
-1.593: git://github.com/cloudbees/jenkins-ci.org-docker@c39540d22e2a9c20e691cbdc4c9c54aee77be357 1.593
-1.594: git://github.com/cloudbees/jenkins-ci.org-docker@c39540d22e2a9c20e691cbdc4c9c54aee77be357 1.594
-1.595: git://github.com/cloudbees/jenkins-ci.org-docker@c39540d22e2a9c20e691cbdc4c9c54aee77be357 1.595
-1.596.1: git://github.com/cloudbees/jenkins-ci.org-docker@ 1.596.1
-latest: git://github.com/cloudbees/jenkins-ci.org-docker@ 1.596.1
-1.596: git://github.com/cloudbees/jenkins-ci.org-docker@c39540d22e2a9c20e691cbdc4c9c54aee77be357 1.596
-1.597: git://github.com/cloudbees/jenkins-ci.org-docker@b7850f2eba0221a1e2ac72b1ea6ecd8d51e3e558 1.597
-1.598: git://github.com/cloudbees/jenkins-ci.org-docker@b7850f2eba0221a1e2ac72b1ea6ecd8d51e3e558 1.598
-1.599: git://github.com/cloudbees/jenkins-ci.org-docker@b7850f2eba0221a1e2ac72b1ea6ecd8d51e3e558 1.599
-1.600: git://github.com/cloudbees/jenkins-ci.org-docker@b7850f2eba0221a1e2ac72b1ea6ecd8d51e3e558 1.600
-1.601: git://github.com/cloudbees/jenkins-ci.org-docker@ 1.601
-1.602: git://github.com/cloudbees/jenkins-ci.org-docker@ 1.602
-1.603: git://github.com/cloudbees/jenkins-ci.org-docker@ 1.603
-1.604: git://github.com/cloudbees/jenkins-ci.org-docker@ 1.604
-1.605: git://github.com/cloudbees/jenkins-ci.org-docker@ 1.605
-weekly: git://github.com/cloudbees/jenkins-ci.org-docker@ 1.605
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
-
