Erlang 18.2 -> 18.3 (required for Ubuntu 16.04 support)
diff --git a/ansible/centos-7-erlang-18.2.yml b/ansible/centos-7-erlang-18.3.yml
similarity index 96%
rename from ansible/centos-7-erlang-18.2.yml
rename to ansible/centos-7-erlang-18.3.yml
index 23dfe42..cffdc23 100644
--- a/ansible/centos-7-erlang-18.2.yml
+++ b/ansible/centos-7-erlang-18.3.yml
@@ -18,4 +18,4 @@
 - hosts: couchdb-ci-worker
   remote_user: root
   roles:
-  - erlang-18.2-centos
+  - erlang-18.3-centos
diff --git a/ansible/debian-8-erlang-18.2.yml b/ansible/debian-8-erlang-18.3.yml
similarity index 91%
rename from ansible/debian-8-erlang-18.2.yml
rename to ansible/debian-8-erlang-18.3.yml
index 04175c3..618464f 100644
--- a/ansible/debian-8-erlang-18.2.yml
+++ b/ansible/debian-8-erlang-18.3.yml
@@ -16,7 +16,9 @@
 #   under the License.
 
 - hosts: couchdb-ci-worker
+  vars:
+    erlang_solutions_pkg_ver: "1:18.3-1"
   remote_user: root
   roles:
   - debian-8
-  - erlang-18.2-debian
+  - erlang-esl-debian-pkgs
diff --git a/ansible/roles/erlang-18.2-debian/tasks/main.yml b/ansible/roles/erlang-18.2-debian/tasks/main.yml
deleted file mode 100644
index fd74075..0000000
--- a/ansible/roles/erlang-18.2-debian/tasks/main.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-- name: import the Erlang Solutions key into apt
-  apt_key:
-    url: "{{ erlang_solutions_key_url }}"
-    state: present
-    # validate_certs: no
-
-- name: add Erlang Solutions deb repository
-  apt_repository:
-    repo: "{{ erlang_solutions_apt_repo_url }}"
-    state: present
-
-# apt-get update
-- name: update apt cache
-  apt:
-    update_cache: yes
-
-- name: install Erlang 18.2
-  apt: name={{item}} state=present install_recommends=no
-  with_items:
-  - erlang-dev=1:18.2
-  - erlang-nox=1:18.2
-  - erlang-base=1:18.2
-  - erlang-asn1=1:18.2
-  - erlang-corba=1:18.2
-  - erlang-crypto=1:18.2
-  - erlang-diameter=1:18.2
-  - erlang-edoc=1:18.2
-  - erlang-eldap=1:18.2
-  - erlang-erl-docgen=1:18.2
-  - erlang-eunit=1:18.2
-  - erlang-ic=1:18.2
-  - erlang-inets=1:18.2
-  - erlang-inviso=1:18.2
-  - erlang-mnesia=1:18.2
-  - erlang-odbc=1:18.2
-  - erlang-os-mon=1:18.2
-  - erlang-parsetools=1:18.2
-  - erlang-percept=1:18.2
-  - erlang-public-key=1:18.2
-  - erlang-runtime-tools=1:18.2
-  - erlang-snmp=1:18.2
-  - erlang-ssh=1:18.2
-  - erlang-ssl=1:18.2
-  - erlang-syntax-tools=1:18.2
-  - erlang-tools=1:18.2
-  - erlang-webtool=1:18.2
-  - erlang-xmerl=1:18.2
-  - erlang-eunit=1:18.2
-  - erlang-dialyzer=1:18.2
diff --git a/ansible/roles/erlang-18.2-centos/tasks/main.yml b/ansible/roles/erlang-18.3-centos/tasks/main.yml
similarity index 83%
rename from ansible/roles/erlang-18.2-centos/tasks/main.yml
rename to ansible/roles/erlang-18.3-centos/tasks/main.yml
index 242f5f2..2bf0555 100644
--- a/ansible/roles/erlang-18.2-centos/tasks/main.yml
+++ b/ansible/roles/erlang-18.3-centos/tasks/main.yml
@@ -15,9 +15,9 @@
 #   specific language governing permissions and limitations
 #   under the License.
 
-- name: download and install Erlang 18.2
+- name: download and install Erlang 18.3
   yum:
-    name: "https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_18.2-1~centos~7_amd64.rpm"
+    name: "http://packages.erlang-solutions.com/site/esl/esl-erlang/FLAVOUR_1_general/esl-erlang_18.3-1~centos~7_amd64.rpm"
 
 - name: clean up yum cache
   command: yum clean all
diff --git a/ansible/roles/erlang-esl-debian-omnibus/meta/main.yml b/ansible/roles/erlang-esl-debian-omnibus/meta/main.yml
new file mode 100644
index 0000000..9dd38b3
--- /dev/null
+++ b/ansible/roles/erlang-esl-debian-omnibus/meta/main.yml
@@ -0,0 +1,2 @@
+dependencies:
+  - { role: erlang-esl-debian }
diff --git a/ansible/roles/erlang-esl-debian-omnibus/vars/main.yml b/ansible/roles/erlang-esl-debian-omnibus/vars/main.yml
new file mode 100644
index 0000000..fd5574a
--- /dev/null
+++ b/ansible/roles/erlang-esl-debian-omnibus/vars/main.yml
@@ -0,0 +1,3 @@
+erlang_solutions_pkg_list:
+  - esl-erlang
+
diff --git a/ansible/roles/erlang-esl-debian-pkgs/meta/main.yml b/ansible/roles/erlang-esl-debian-pkgs/meta/main.yml
new file mode 100644
index 0000000..9dd38b3
--- /dev/null
+++ b/ansible/roles/erlang-esl-debian-pkgs/meta/main.yml
@@ -0,0 +1,2 @@
+dependencies:
+  - { role: erlang-esl-debian }
diff --git a/ansible/roles/erlang-esl-debian-pkgs/vars/main.yml b/ansible/roles/erlang-esl-debian-pkgs/vars/main.yml
new file mode 100644
index 0000000..00ec403
--- /dev/null
+++ b/ansible/roles/erlang-esl-debian-pkgs/vars/main.yml
@@ -0,0 +1,32 @@
+erlang_solutions_pkg_list:
+  - erlang-dev
+  - erlang-nox
+  - erlang-base
+  - erlang-asn1
+  - erlang-corba
+  - erlang-crypto
+  - erlang-diameter
+  - erlang-edoc
+  - erlang-eldap
+  - erlang-erl-docgen
+  - erlang-eunit
+  - erlang-ic
+  - erlang-inets
+  - erlang-inviso
+  - erlang-mnesia
+  - erlang-odbc
+  - erlang-os-mon
+  - erlang-parsetools
+  - erlang-percept
+  - erlang-public-key
+  - erlang-runtime-tools
+  - erlang-snmp
+  - erlang-ssh
+  - erlang-ssl
+  - erlang-syntax-tools
+  - erlang-tools
+  - erlang-webtool
+  - erlang-xmerl
+  - erlang-eunit
+  - erlang-dialyzer
+
diff --git a/ansible/roles/erlang-18.2-centos/tasks/main.yml b/ansible/roles/erlang-esl-debian/tasks/main.yml
similarity index 60%
copy from ansible/roles/erlang-18.2-centos/tasks/main.yml
copy to ansible/roles/erlang-esl-debian/tasks/main.yml
index 242f5f2..5e593a8 100644
--- a/ansible/roles/erlang-18.2-centos/tasks/main.yml
+++ b/ansible/roles/erlang-esl-debian/tasks/main.yml
@@ -15,9 +15,22 @@
 #   specific language governing permissions and limitations
 #   under the License.
 
-- name: download and install Erlang 18.2
-  yum:
-    name: "https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_18.2-1~centos~7_amd64.rpm"
+- name: import the Erlang Solutions key into apt
+  apt_key:
+    url: "{{ erlang_solutions_key_url }}"
+    state: present
+    # validate_certs: no
 
-- name: clean up yum cache
-  command: yum clean all
+- name: add Erlang Solutions deb repository
+  apt_repository:
+    repo: "{{ erlang_solutions_apt_repo_url }}"
+    state: present
+
+# apt-get update
+- name: update apt cache
+  apt:
+    update_cache: yes
+
+- name: install requested Erlang version
+  apt: name="{{item}}={{ erlang_solutions_pkg_ver }}" state=present install_recommends=no
+  with_items: "{{ erlang_solutions_pkg_list }}"
diff --git a/ansible/roles/ubuntu-1604/vars/main.yml b/ansible/roles/ubuntu-1604/vars/main.yml
index 268c9d0..6fdd05e 100644
--- a/ansible/roles/ubuntu-1604/vars/main.yml
+++ b/ansible/roles/ubuntu-1604/vars/main.yml
@@ -1,2 +1,2 @@
 erlang_solutions_key_url: http://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc
-erlang_solutions_apt_repo_url: deb http://packages.erlang-solutions.com/ubuntu precise contrib
+erlang_solutions_apt_repo_url: deb http://packages.erlang-solutions.com/ubuntu xenial contrib
diff --git a/ansible/run-ansible-local.sh b/ansible/run-ansible-local.sh
index aae21e9..f9af1db 100755
--- a/ansible/run-ansible-local.sh
+++ b/ansible/run-ansible-local.sh
@@ -40,7 +40,7 @@
 ANSIBLE_FORCE_COLOR=1 ANSIBLE_NOCOWS=1 \
   ansible-playbook \
   --connection=local \
-  --inventory-file=./docker-inventories/ubuntu-14.04-erlang-18.2 \
+  --inventory-file=./docker-inventories/ubuntu-14.04-erlang-18.3 \
   --sudo \
   $TAG \
   site.yml
diff --git a/ansible/ubuntu-14.04-erlang-18.2.yml b/ansible/ubuntu-14.04-erlang-18.3.yml
similarity index 91%
rename from ansible/ubuntu-14.04-erlang-18.2.yml
rename to ansible/ubuntu-14.04-erlang-18.3.yml
index d94bba0..56627a1 100644
--- a/ansible/ubuntu-14.04-erlang-18.2.yml
+++ b/ansible/ubuntu-14.04-erlang-18.3.yml
@@ -16,7 +16,9 @@
 #   under the License.
 
 - hosts: couchdb-ci-worker
+  vars:
+    erlang_solutions_pkg_ver: "1:18.3"
   remote_user: root
   roles:
   - ubuntu-1404
-  - erlang-18.2-debian
+  - erlang-esl-debian-omnibus
diff --git a/ansible/ubuntu-16.04-erlang-18.2.yml b/ansible/ubuntu-16.04-erlang-18.3.yml
similarity index 91%
rename from ansible/ubuntu-16.04-erlang-18.2.yml
rename to ansible/ubuntu-16.04-erlang-18.3.yml
index afa62cf..51331e0 100644
--- a/ansible/ubuntu-16.04-erlang-18.2.yml
+++ b/ansible/ubuntu-16.04-erlang-18.3.yml
@@ -16,7 +16,9 @@
 #   under the License.
 
 - hosts: couchdb-ci-worker
+  vars:
+    erlang_solutions_pkg_ver: "1:18.3-1"
   remote_user: root
   roles:
   - ubuntu-1604
-  - erlang-18.2-debian
+  - erlang-esl-debian-pkgs
diff --git a/bin/centos-7-erlang-18.2/enter-container.sh b/bin/centos-7-erlang-18.2/enter-container.sh
deleted file mode 100755
index a6ac0c1..0000000
--- a/bin/centos-7-erlang-18.2/enter-container.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-docker run -it couchdbdev/centos-7-erlang-18.2 bash
diff --git a/bin/centos-7-erlang-18.2/publish-container.sh b/bin/centos-7-erlang-18.2/publish-container.sh
deleted file mode 100755
index c1336a9..0000000
--- a/bin/centos-7-erlang-18.2/publish-container.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-docker push couchdbdev/centos-7-erlang-18.2
diff --git a/bin/centos-7-erlang-18.2/run-build-in-container.sh b/bin/centos-7-erlang-18.2/run-build-in-container.sh
deleted file mode 100755
index fe9aa90..0000000
--- a/bin/centos-7-erlang-18.2/run-build-in-container.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-set -e
-pushd $( dirname "$0" )/../..
-pwd
-OS=centos-7 ERLANG=18.2 jenkins/build.sh
-popd
diff --git a/bin/centos-7-erlang-18.2/create-container.sh b/bin/centos-7-erlang-18.3/create-container.sh
similarity index 91%
copy from bin/centos-7-erlang-18.2/create-container.sh
copy to bin/centos-7-erlang-18.3/create-container.sh
index 349d711..4933459 100755
--- a/bin/centos-7-erlang-18.2/create-container.sh
+++ b/bin/centos-7-erlang-18.3/create-container.sh
@@ -23,6 +23,6 @@
 # build context (because they need the Ansible files).
 pushd `dirname $0`/../.. > /dev/null
 
-docker build -f dockerfiles/centos-7-erlang-18.2 -t couchdbdev/centos-7-erlang-18.2 .
+docker build -f dockerfiles/centos-7-erlang-18.3 -t couchdbdev/centos-7-erlang-18.3 .
 
 popd > /dev/null
diff --git a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh b/bin/centos-7-erlang-18.3/enter-container.sh
similarity index 93%
copy from bin/ubuntu-14.04-erlang-18.2/publish-container.sh
copy to bin/centos-7-erlang-18.3/enter-container.sh
index d3ca014..c5ba583 100755
--- a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh
+++ b/bin/centos-7-erlang-18.3/enter-container.sh
@@ -17,4 +17,4 @@
 #   specific language governing permissions and limitations
 #   under the License.
 
-docker push couchdbdev/ubuntu-14.04-erlang-18.2
+docker run -it couchdbdev/centos-7-erlang-18.3 bash
diff --git a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh b/bin/centos-7-erlang-18.3/publish-container.sh
similarity index 94%
copy from bin/ubuntu-14.04-erlang-18.2/publish-container.sh
copy to bin/centos-7-erlang-18.3/publish-container.sh
index d3ca014..675df18 100755
--- a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh
+++ b/bin/centos-7-erlang-18.3/publish-container.sh
@@ -17,4 +17,4 @@
 #   specific language governing permissions and limitations
 #   under the License.
 
-docker push couchdbdev/ubuntu-14.04-erlang-18.2
+docker push couchdbdev/centos-7-erlang-18.3
diff --git a/bin/debian-8-erlang-18.2/run-build-in-container.sh b/bin/centos-7-erlang-18.3/run-build-in-container.sh
similarity index 95%
rename from bin/debian-8-erlang-18.2/run-build-in-container.sh
rename to bin/centos-7-erlang-18.3/run-build-in-container.sh
index 151e811..3695ebc 100755
--- a/bin/debian-8-erlang-18.2/run-build-in-container.sh
+++ b/bin/centos-7-erlang-18.3/run-build-in-container.sh
@@ -20,5 +20,5 @@
 set -e
 pushd $( dirname "$0" )/../..
 pwd
-OS=debian-8 ERLANG=18.2 jenkins/build.sh
+OS=centos-7 ERLANG=18.3 jenkins/build.sh
 popd
diff --git a/bin/debian-8-erlang-18.2/create-container.sh b/bin/debian-8-erlang-18.2/create-container.sh
deleted file mode 100755
index 095c99e..0000000
--- a/bin/debian-8-erlang-18.2/create-container.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-set -e
-
-# The Docker containers need the root directory of this repository as their
-# build context (because they need the Ansible files).
-pushd `dirname $0`/../.. > /dev/null
-
-docker build -f dockerfiles/debian-8-erlang-18.2 -t couchdbdev/debian-8-erlang-18.2 .
-
-popd > /dev/null
diff --git a/bin/debian-8-erlang-18.2/enter-container.sh b/bin/debian-8-erlang-18.2/enter-container.sh
deleted file mode 100755
index f5b9a1a..0000000
--- a/bin/debian-8-erlang-18.2/enter-container.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-docker run -it couchdbdev/debian-8-erlang-18.2 bash
diff --git a/bin/debian-8-erlang-18.2/publish-container.sh b/bin/debian-8-erlang-18.2/publish-container.sh
deleted file mode 100755
index fffc6c0..0000000
--- a/bin/debian-8-erlang-18.2/publish-container.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-docker push couchdbdev/debian-8-erlang-18.2
diff --git a/bin/centos-7-erlang-18.2/create-container.sh b/bin/debian-8-erlang-18.3/create-container.sh
similarity index 91%
rename from bin/centos-7-erlang-18.2/create-container.sh
rename to bin/debian-8-erlang-18.3/create-container.sh
index 349d711..95511f1 100755
--- a/bin/centos-7-erlang-18.2/create-container.sh
+++ b/bin/debian-8-erlang-18.3/create-container.sh
@@ -23,6 +23,6 @@
 # build context (because they need the Ansible files).
 pushd `dirname $0`/../.. > /dev/null
 
-docker build -f dockerfiles/centos-7-erlang-18.2 -t couchdbdev/centos-7-erlang-18.2 .
+docker build -f dockerfiles/debian-8-erlang-18.3 -t couchdbdev/debian-8-erlang-18.3 .
 
 popd > /dev/null
diff --git a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh b/bin/debian-8-erlang-18.3/enter-container.sh
similarity index 93%
copy from bin/ubuntu-14.04-erlang-18.2/publish-container.sh
copy to bin/debian-8-erlang-18.3/enter-container.sh
index d3ca014..c259021 100755
--- a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh
+++ b/bin/debian-8-erlang-18.3/enter-container.sh
@@ -17,4 +17,4 @@
 #   specific language governing permissions and limitations
 #   under the License.
 
-docker push couchdbdev/ubuntu-14.04-erlang-18.2
+docker run -it couchdbdev/debian-8-erlang-18.3 bash
diff --git a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh b/bin/debian-8-erlang-18.3/publish-container.sh
similarity index 94%
copy from bin/ubuntu-14.04-erlang-18.2/publish-container.sh
copy to bin/debian-8-erlang-18.3/publish-container.sh
index d3ca014..ba9ddea 100755
--- a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh
+++ b/bin/debian-8-erlang-18.3/publish-container.sh
@@ -17,4 +17,4 @@
 #   specific language governing permissions and limitations
 #   under the License.
 
-docker push couchdbdev/ubuntu-14.04-erlang-18.2
+docker push couchdbdev/debian-8-erlang-18.3
diff --git a/bin/debian-8-erlang-18.2/run-build-in-container.sh b/bin/debian-8-erlang-18.3/run-build-in-container.sh
similarity index 95%
copy from bin/debian-8-erlang-18.2/run-build-in-container.sh
copy to bin/debian-8-erlang-18.3/run-build-in-container.sh
index 151e811..a939525 100755
--- a/bin/debian-8-erlang-18.2/run-build-in-container.sh
+++ b/bin/debian-8-erlang-18.3/run-build-in-container.sh
@@ -20,5 +20,5 @@
 set -e
 pushd $( dirname "$0" )/../..
 pwd
-OS=debian-8 ERLANG=18.2 jenkins/build.sh
+OS=debian-8 ERLANG=18.3 jenkins/build.sh
 popd
diff --git a/bin/rebuild-all.sh b/bin/rebuild-all.sh
index 78433b7..8207ab3 100755
--- a/bin/rebuild-all.sh
+++ b/bin/rebuild-all.sh
@@ -22,3 +22,5 @@
 
 find $SCRIPTPATH/*-base -type d -exec {}/create-container.sh \;
 find $SCRIPTPATH/*erlang* -type d -exec {}/create-container.sh \;
+exec $SCRIPTPATH/cleanup-docker.sh
+
diff --git a/bin/ubuntu-14.04-erlang-18.2/create-container.sh b/bin/ubuntu-14.04-erlang-18.2/create-container.sh
deleted file mode 100755
index 4c4a7be..0000000
--- a/bin/ubuntu-14.04-erlang-18.2/create-container.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-set -e
-
-# The Docker containers need the root directory of this repository as their
-# build context (because they need the Ansible files).
-pushd `dirname $0`/../.. > /dev/null
-
-docker build -f dockerfiles/ubuntu-14.04-erlang-18.2 -t couchdbdev/ubuntu-14.04-erlang-18.2 .
-
-popd > /dev/null
diff --git a/bin/ubuntu-14.04-erlang-18.2/enter-container.sh b/bin/ubuntu-14.04-erlang-18.2/enter-container.sh
deleted file mode 100755
index a755d9e..0000000
--- a/bin/ubuntu-14.04-erlang-18.2/enter-container.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-docker run -it couchdbdev/ubuntu-14.04-erlang-18.2 bash
diff --git a/bin/ubuntu-14.04-erlang-18.2/run-build-in-container.sh b/bin/ubuntu-14.04-erlang-18.2/run-build-in-container.sh
deleted file mode 100755
index 8fe0eec..0000000
--- a/bin/ubuntu-14.04-erlang-18.2/run-build-in-container.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-set -e
-pushd $( dirname "$0" )/../..
-pwd
-OS=ubuntu-14.04 ERLANG=18.2 jenkins/build.sh
-popd
diff --git a/bin/centos-7-erlang-18.2/create-container.sh b/bin/ubuntu-14.04-erlang-18.3/create-container.sh
similarity index 91%
copy from bin/centos-7-erlang-18.2/create-container.sh
copy to bin/ubuntu-14.04-erlang-18.3/create-container.sh
index 349d711..6054b42 100755
--- a/bin/centos-7-erlang-18.2/create-container.sh
+++ b/bin/ubuntu-14.04-erlang-18.3/create-container.sh
@@ -23,6 +23,6 @@
 # build context (because they need the Ansible files).
 pushd `dirname $0`/../.. > /dev/null
 
-docker build -f dockerfiles/centos-7-erlang-18.2 -t couchdbdev/centos-7-erlang-18.2 .
+docker build -f dockerfiles/ubuntu-14.04-erlang-18.3 -t couchdbdev/ubuntu-14.04-erlang-18.3 .
 
 popd > /dev/null
diff --git a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh b/bin/ubuntu-14.04-erlang-18.3/enter-container.sh
similarity index 93%
copy from bin/ubuntu-14.04-erlang-18.2/publish-container.sh
copy to bin/ubuntu-14.04-erlang-18.3/enter-container.sh
index d3ca014..985051c 100755
--- a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh
+++ b/bin/ubuntu-14.04-erlang-18.3/enter-container.sh
@@ -17,4 +17,4 @@
 #   specific language governing permissions and limitations
 #   under the License.
 
-docker push couchdbdev/ubuntu-14.04-erlang-18.2
+docker run -it couchdbdev/ubuntu-14.04-erlang-18.3 bash
diff --git a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh b/bin/ubuntu-14.04-erlang-18.3/publish-container.sh
similarity index 94%
copy from bin/ubuntu-14.04-erlang-18.2/publish-container.sh
copy to bin/ubuntu-14.04-erlang-18.3/publish-container.sh
index d3ca014..93fd590 100755
--- a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh
+++ b/bin/ubuntu-14.04-erlang-18.3/publish-container.sh
@@ -17,4 +17,4 @@
 #   specific language governing permissions and limitations
 #   under the License.
 
-docker push couchdbdev/ubuntu-14.04-erlang-18.2
+docker push couchdbdev/ubuntu-14.04-erlang-18.3
diff --git a/bin/debian-8-erlang-18.2/run-build-in-container.sh b/bin/ubuntu-14.04-erlang-18.3/run-build-in-container.sh
similarity index 94%
copy from bin/debian-8-erlang-18.2/run-build-in-container.sh
copy to bin/ubuntu-14.04-erlang-18.3/run-build-in-container.sh
index 151e811..603d6fa 100755
--- a/bin/debian-8-erlang-18.2/run-build-in-container.sh
+++ b/bin/ubuntu-14.04-erlang-18.3/run-build-in-container.sh
@@ -20,5 +20,5 @@
 set -e
 pushd $( dirname "$0" )/../..
 pwd
-OS=debian-8 ERLANG=18.2 jenkins/build.sh
+OS=ubuntu-14.04 ERLANG=18.3 jenkins/build.sh
 popd
diff --git a/bin/ubuntu-16.04-erlang-18.2/create-container.sh b/bin/ubuntu-16.04-erlang-18.2/create-container.sh
deleted file mode 100755
index d241493..0000000
--- a/bin/ubuntu-16.04-erlang-18.2/create-container.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-set -e
-
-# The Docker containers need the root directory of this repository as their
-# build context (because they need the Ansible files).
-pushd `dirname $0`/../.. > /dev/null
-
-docker build -f dockerfiles/ubuntu-16.04-erlang-18.2 -t couchdbdev/ubuntu-16.04-erlang-18.2 .
-
-popd > /dev/null
diff --git a/bin/ubuntu-16.04-erlang-18.2/enter-container.sh b/bin/ubuntu-16.04-erlang-18.2/enter-container.sh
deleted file mode 100755
index de2d2a7..0000000
--- a/bin/ubuntu-16.04-erlang-18.2/enter-container.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-docker run -it couchdbdev/ubuntu-16.04-erlang-18.2 bash
diff --git a/bin/ubuntu-16.04-erlang-18.2/publish-container.sh b/bin/ubuntu-16.04-erlang-18.2/publish-container.sh
deleted file mode 100755
index 72a36d3..0000000
--- a/bin/ubuntu-16.04-erlang-18.2/publish-container.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-docker push couchdbdev/ubuntu-16.04-erlang-18.2
diff --git a/bin/ubuntu-16.04-erlang-18.2/run-build-in-container.sh b/bin/ubuntu-16.04-erlang-18.2/run-build-in-container.sh
deleted file mode 100755
index c6875cc..0000000
--- a/bin/ubuntu-16.04-erlang-18.2/run-build-in-container.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-set -e
-pushd $( dirname "$0" )/../..
-pwd
-OS=ubuntu-16.04 ERLANG=18.2 jenkins/build.sh
-popd
diff --git a/bin/centos-7-erlang-18.2/create-container.sh b/bin/ubuntu-16.04-erlang-18.3/create-container.sh
similarity index 91%
copy from bin/centos-7-erlang-18.2/create-container.sh
copy to bin/ubuntu-16.04-erlang-18.3/create-container.sh
index 349d711..99dcc78 100755
--- a/bin/centos-7-erlang-18.2/create-container.sh
+++ b/bin/ubuntu-16.04-erlang-18.3/create-container.sh
@@ -23,6 +23,6 @@
 # build context (because they need the Ansible files).
 pushd `dirname $0`/../.. > /dev/null
 
-docker build -f dockerfiles/centos-7-erlang-18.2 -t couchdbdev/centos-7-erlang-18.2 .
+docker build -f dockerfiles/ubuntu-16.04-erlang-18.3 -t couchdbdev/ubuntu-16.04-erlang-18.3 .
 
 popd > /dev/null
diff --git a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh b/bin/ubuntu-16.04-erlang-18.3/enter-container.sh
similarity index 93%
copy from bin/ubuntu-14.04-erlang-18.2/publish-container.sh
copy to bin/ubuntu-16.04-erlang-18.3/enter-container.sh
index d3ca014..eb5e9a3 100755
--- a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh
+++ b/bin/ubuntu-16.04-erlang-18.3/enter-container.sh
@@ -17,4 +17,4 @@
 #   specific language governing permissions and limitations
 #   under the License.
 
-docker push couchdbdev/ubuntu-14.04-erlang-18.2
+docker run -it couchdbdev/ubuntu-16.04-erlang-18.3 bash
diff --git a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh b/bin/ubuntu-16.04-erlang-18.3/publish-container.sh
similarity index 94%
rename from bin/ubuntu-14.04-erlang-18.2/publish-container.sh
rename to bin/ubuntu-16.04-erlang-18.3/publish-container.sh
index d3ca014..1bec512 100755
--- a/bin/ubuntu-14.04-erlang-18.2/publish-container.sh
+++ b/bin/ubuntu-16.04-erlang-18.3/publish-container.sh
@@ -17,4 +17,4 @@
 #   specific language governing permissions and limitations
 #   under the License.
 
-docker push couchdbdev/ubuntu-14.04-erlang-18.2
+docker push couchdbdev/ubuntu-16.04-erlang-18.3
diff --git a/bin/debian-8-erlang-18.2/run-build-in-container.sh b/bin/ubuntu-16.04-erlang-18.3/run-build-in-container.sh
similarity index 94%
copy from bin/debian-8-erlang-18.2/run-build-in-container.sh
copy to bin/ubuntu-16.04-erlang-18.3/run-build-in-container.sh
index 151e811..aa833df 100755
--- a/bin/debian-8-erlang-18.2/run-build-in-container.sh
+++ b/bin/ubuntu-16.04-erlang-18.3/run-build-in-container.sh
@@ -20,5 +20,5 @@
 set -e
 pushd $( dirname "$0" )/../..
 pwd
-OS=debian-8 ERLANG=18.2 jenkins/build.sh
+OS=ubuntu-16.04 ERLANG=18.3 jenkins/build.sh
 popd
diff --git a/dockerfiles/centos-7-erlang-18.2 b/dockerfiles/centos-7-erlang-18.3
similarity index 91%
rename from dockerfiles/centos-7-erlang-18.2
rename to dockerfiles/centos-7-erlang-18.3
index 828ee41..e44ae50 100644
--- a/dockerfiles/centos-7-erlang-18.2
+++ b/dockerfiles/centos-7-erlang-18.3
@@ -24,8 +24,8 @@
 # a role that only affects a child container
 ADD ./ansible /ansible
 
-# Run Ansible to provision container with Erlang 18.2
-RUN ansible-playbook centos-7-erlang-18.2.yml \
+# Run Ansible to provision container with Erlang 18.3
+RUN ansible-playbook centos-7-erlang-18.3.yml \
   --connection=local \
   --inventory-file=./inventory/couchdb-ci-worker
 
diff --git a/dockerfiles/debian-8-erlang-18.2 b/dockerfiles/debian-8-erlang-18.3
similarity index 91%
rename from dockerfiles/debian-8-erlang-18.2
rename to dockerfiles/debian-8-erlang-18.3
index 15247e5..e7f0b80 100644
--- a/dockerfiles/debian-8-erlang-18.2
+++ b/dockerfiles/debian-8-erlang-18.3
@@ -24,8 +24,8 @@
 # a role that only affects a child container
 ADD ./ansible /ansible
 
-# Run Ansible to provision container with Erlang 18.2
-RUN ansible-playbook debian-8-erlang-18.2.yml \
+# Run Ansible to provision container with Erlang 18.3
+RUN ansible-playbook debian-8-erlang-18.3.yml \
   --connection=local \
   --inventory-file=./inventory/couchdb-ci-worker
 
diff --git a/dockerfiles/ubuntu-14.04-erlang-18.2 b/dockerfiles/ubuntu-14.04-erlang-18.3
similarity index 91%
rename from dockerfiles/ubuntu-14.04-erlang-18.2
rename to dockerfiles/ubuntu-14.04-erlang-18.3
index 5206c8b..7ff2348 100644
--- a/dockerfiles/ubuntu-14.04-erlang-18.2
+++ b/dockerfiles/ubuntu-14.04-erlang-18.3
@@ -24,8 +24,8 @@
 # a role that only affects a child container
 ADD ./ansible /ansible
 
-# Run Ansible to provision container with Erlang 18.2
-RUN ansible-playbook ubuntu-14.04-erlang-18.2.yml \
+# Run Ansible to provision container with Erlang 18.3
+RUN ansible-playbook ubuntu-14.04-erlang-18.3.yml \
   --connection=local \
   --inventory-file=./inventory/couchdb-ci-worker
 
diff --git a/dockerfiles/ubuntu-16.04-erlang-18.2 b/dockerfiles/ubuntu-16.04-erlang-18.3
similarity index 91%
rename from dockerfiles/ubuntu-16.04-erlang-18.2
rename to dockerfiles/ubuntu-16.04-erlang-18.3
index b13a373..dbedf62 100644
--- a/dockerfiles/ubuntu-16.04-erlang-18.2
+++ b/dockerfiles/ubuntu-16.04-erlang-18.3
@@ -24,8 +24,8 @@
 # a role that only affects a child container
 ADD ./ansible /ansible
 
-# Run Ansible to provision container with Erlang 18.2
-RUN ansible-playbook ubuntu-16.04-erlang-18.2.yml \
+# Run Ansible to provision container with Erlang 18.3
+RUN ansible-playbook ubuntu-16.04-erlang-18.3.yml \
   --connection=local \
   --inventory-file=./inventory/couchdb-ci-worker
 
diff --git a/jenkins/build.sh b/jenkins/build.sh
index 623b6b3..b65c258 100755
--- a/jenkins/build.sh
+++ b/jenkins/build.sh
@@ -62,9 +62,9 @@
     echo "Using OS default Erlang"
     DOCKER_IMAGE=$DOCKER_IMAGE"erlang-default"
     ;;
-  18.2*)
-    echo "Using Erlang 18.2"
-    DOCKER_IMAGE=$DOCKER_IMAGE"erlang-18.2"
+  18.3*)
+    echo "Using Erlang 18.3"
+    DOCKER_IMAGE=$DOCKER_IMAGE"erlang-18.3"
     ;;
   *)
     echo "Unknown Erlang version $ERLANG"
diff --git a/readme.markdown b/readme.markdown
index 61b7e92..075c7a5 100644
--- a/readme.markdown
+++ b/readme.markdown
@@ -13,13 +13,14 @@
 
 ## Supported Configurations (updated 2017-03-22)
 
-**OS/Erlang**       | **default ** | **18.2**
---------------------|--------------|----------
+**OS/Erlang**       | **default ** | **18.3**
+--------------------|--------------|--------------
+**Ubuntu 12.04**    | -            | -
 **Ubuntu 14.04**    | ✔ (16B03-1)  | ✔
 **Ubuntu 16.04**    | ✔ (18.3)     | ✔
 **Debian 7**        | -            | -
 **Debian 8**        | ✔ (17.3)     | ✔
-**Debian 9**        | -            | -
+**Debian 9**        | unreleased   | unreleased
 **CentOS 6**        | -            | -
 **CentOS 7**        | ✔ (16B03-1)  | ✔
 **macOS 10.12**     | -            | -