You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by wo...@apache.org on 2021/04/13 21:05:58 UTC

[couchdb-ci] branch main updated: Rework for April 2021

This is an automated email from the ASF dual-hosted git repository.

wohali pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb-ci.git


The following commit(s) were added to refs/heads/main by this push:
     new 8dfc3a8  Rework for April 2021
8dfc3a8 is described below

commit 8dfc3a809a9192c19bb53dd97f35a4d6a0f94434
Author: Joan Touzet <wo...@apache.org>
AuthorDate: Tue Apr 13 14:05:41 2021 -0700

    Rework for April 2021
---
 README.md                  | 28 ++++++++--------------
 bin/apt-dependencies.sh    | 38 ++++++++++++++---------------
 bin/apt-erlang.sh          | 12 +++++-----
 bin/detect-os.sh           |  2 +-
 bin/yum-dependencies.sh    | 10 ++++----
 build.sh                   | 60 ++++++++++++++++++++++++++--------------------
 dockerfiles/centos-6       |  6 ++---
 dockerfiles/centos-7       |  6 ++---
 dockerfiles/centos-8       |  6 ++---
 dockerfiles/debian-buster  |  8 +++----
 dockerfiles/debian-jessie  | 56 -------------------------------------------
 dockerfiles/debian-stretch |  6 ++---
 dockerfiles/ubuntu-bionic  |  6 ++---
 dockerfiles/ubuntu-focal   |  6 ++---
 dockerfiles/ubuntu-trusty  |  6 ++---
 dockerfiles/ubuntu-xenial  |  6 ++---
 16 files changed, 103 insertions(+), 159 deletions(-)

diff --git a/README.md b/README.md
index 63f7464..b3deda6 100644
--- a/README.md
+++ b/README.md
@@ -34,16 +34,6 @@ CouchDB's CI build philosophy is to use Travis (with `kerl`) to validate CouchDB
 
 For those OSes that support Docker, we run builds inside of Docker containers. These containers are built using the `build.sh` command at the root level.
 
-## Building a "base image"
-
-The base images include all of the build dependencies necessary to build CouchDB **except** for Erlang and SpiderMonkey 1.8.5. These images are typically used to build the CouchDB SpiderMonkey 1.8.5 binaries for a given OS/version/architecture combination.
-
-Build a base image with:
-
-```
-./build.sh base <distro>-<version>
-```
-
 ## Building a "platform image"
 
 The platform images include all of the build dependencies necessary to build and full test CouchDB on a given OS/version/architecture combination.
@@ -109,13 +99,7 @@ CONTAINERARCH=aarch64 ./build.sh platform debian-stretch
 
 Recognized commands:
   clean <plat>          Removes all images for <plat>.
-  clean-all             Removes all images for all platforms & base images.
-
-  base <plat>           Builds the base (no JS/Erlang) image for <plat>.
-  base-all              Builds all base (no JS/Erlang) images.
-  *base-upload          Uploads the specified couchdbdev/*-base image
-                        to Docker Hub.
-  *base-upload-all      Uploads all the couchdbdev/*-base images.
+  clean-all             Removes all images for all platforms.
 
   platform <plat>       Builds the image for <plat> with Erlang & JS support.
   platform-all          Builds all images with Erlang and JS support.
@@ -146,13 +130,21 @@ where `<tag>` is of the format `<distro>-<version>-<type>`, such as `debian-stre
 
 ## Building SpiderMonkey 1.8.5 convenience packages
 
+This is only needed if a platform does not have a supported SpiderMonkey library. As of April 2021, this is no currently supported platform.
+
+First, build the 'base' image with:
+
+```
+./build.sh base <distro>-<version>
+```
+
 After building the base image as above, head over to the [apache/couchdb-pkg](https://github.com/apache/couchdb-pkg) repository and follow the instructions there.
 
 ## Adding support for a new release/platform/architecture
 
 1. Update the build scripts in the `bin/` directory to install the dependencies correctly on your new OS/version/platform. Push a PR with these changes.
 1. Copy and customize an appropriate Dockerfile in the `dockerfiles` directory for your new OS.
-1. Build a base image using `./build.sh base <distro>-<version>`. Solve any problems with the build process here. Add your new platform combination to the `.travis.yml` file, then push a PR with these changes.
+1. If a supported SpiderMonkey library is not available on the target platform, build a base image using `./build.sh base <distro>-<version>`. Solve any problems with the build process here. Add your new platform combination to the `.travis.yml` file, then push a PR with these changes.
 1. Using the [apache/couchdb-pkg](https://github.com/apache/couchdb-pkg) repository, validate you can build the JS package. Fix any problems in that repo that arise and raise a new PR. Open a new issue on that PR requesting that the JS packages be made available through the CouchDB repository/download infrastructure.
 1. Build a full platform image with `./build.sh platform <distro>-<version>`. Solve any problems with the build process here. Add your new platform combination to the `.travis.yml` file, then push a PR with these changes.
 1. Submit a PR against the [apache/couchdb](https://github.com/apache/couchdb) repository, adding the new platform to the top level `Jenkinsfile`. Ask if you need help.
diff --git a/bin/apt-dependencies.sh b/bin/apt-dependencies.sh
index f8f0be3..25814d3 100755
--- a/bin/apt-dependencies.sh
+++ b/bin/apt-dependencies.sh
@@ -37,7 +37,7 @@ if [ ${EUID} -ne 0 ]; then
 fi
 
 # install lsb-release
-apt-get update && apt-get install -y lsb-release
+apt-get update && apt-get install --no-install-recommends -y lsb-release
 
 SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 . ${SCRIPTPATH}/detect-arch.sh >/dev/null
@@ -52,17 +52,17 @@ if [ ! -f /etc/timezone ]; then
   ln -snf /usr/share/zoneinfo/Etc/UTC /etc/localtime
   echo "Etc/UTC" > /etc/timezone
   chmod 0644 /etc/timezone
-  apt-get install -y tzdata
+  apt-get install --no-install-recommends -y tzdata
   export TZ=Etc/UTC
 fi
 
 # Upgrade all packages
-apt-get -y dist-upgrade
+apt-get --no-install-recommends -y dist-upgrade
 
 # install build-time dependencies
 
 # build deps, doc build deps, pkg building, then userland helper stuff
-apt-get install -y apt-transport-https curl git pkg-config \
+apt-get install --no-install-recommends -y apt-transport-https curl git pkg-config \
     python3 libpython3-dev python3-setuptools python3-pip python3-venv \
     sudo wget zip unzip \
     build-essential ca-certificates libcurl4-openssl-dev \
@@ -71,18 +71,18 @@ apt-get install -y apt-transport-https curl git pkg-config \
     curl debhelper devscripts dh-exec dh-python dh-systemd equivs \
     dialog equivs lintian libwww-perl quilt \
     reprepro rsync \
-    vim-tiny screen procps
+    vim-tiny screen procps dirmngr
 
 # python 2 based; gone from focal / bullseye. look for createrepo_c eventually
 # hopefully via: https://github.com/rpm-software-management/createrepo_c/issues/145
-apt-get install -y createrepo || true
+apt-get install --no-install-recommends -y createrepo || true
 
 if [ ${VERSION_CODENAME} == "xenial" ]; then
   apt remove -y python3-venv
-  apt install -y software-properties-common
+  apt install --no-install-recommends -y software-properties-common
   add-apt-repository ppa:deadsnakes/ppa
   apt-get update
-  apt install -y python3.7 python3.7-dev python3.7-venv
+  apt install --no-install-recommends -y python3.7 python3.7-dev python3.7-venv
   rm /usr/bin/python3
   ln -s /usr/bin/python3.7 /usr/bin/python3
   pip3 install --upgrade pip
@@ -91,11 +91,11 @@ fi
 
 # Node.js
 if [ "${ARCH}" == "ppc64le" -o "${ARCH}" == "s390x" ]; then
-  apt-get install -y nodejs npm
+  apt-get install --no-install-recommends -y nodejs npm
 else
   wget https://deb.nodesource.com/setup_${NODEVERSION}.x
   if /bin/bash setup_${NODEVERSION}.x; then
-    apt-get install -y nodejs
+    apt-get install --no-install-recommends -y nodejs
   fi
   rm setup_${NODEVERSION}.x
 fi
@@ -123,7 +123,7 @@ Version: ${NODEVERSION}.99.99
 Description: Fake nodejs package to appease package builder
 EOF
   equivs-build nodejs-control
-  apt-get install -y ./nodejs*.deb
+  apt-get install --no-install-recommends -y ./nodejs*.deb
   rm nodejs-control nodejs*deb
 fi
 # update to latest npm
@@ -167,19 +167,19 @@ if [ "$1" != "nojs" ]; then
     apt-key adv --keyserver keyserver.ubuntu.com --recv-keys \
         8756C4F765C9AC3CB6B85D62379CE192D401AB61
     apt-get update
-    apt-get install -y couch-libmozjs185-dev
+    apt-get install --no-install-recommends -y couch-libmozjs185-dev
   fi
   # newer releases have newer libmozjs
   if [ "${VERSION_CODENAME}" == "buster" ]; then
-    apt-get install -y libmozjs-60-dev
+    apt-get install --no-install-recommends -y libmozjs-60-dev
   fi
   if [ "${VERSION_CODENAME}" == "focal" ]; then
-    apt-get install -y libmozjs-68-dev
+    apt-get install --no-install-recommends -y libmozjs-68-dev
   fi
 else
   # install js build-time dependencies only
   # we can't add the CouchDB repo here because the plat may not exist yet
-  apt-get install -y libffi-dev pkg-kde-tools autotools-dev
+  apt-get install --no-install-recommends -y libffi-dev pkg-kde-tools autotools-dev
 fi
 
 # Erlang is installed by apt-erlang.sh
@@ -187,16 +187,16 @@ fi
 # FoundationDB - but only for amd64 right now!!!!
 # TODO: fix for ppc64le and s390x - get IBM to help build these packages maybe?
 if [ "${ARCH}" == "x86_64" ]; then
-  wget https://www.foundationdb.org/downloads/6.2.29/ubuntu/installers/foundationdb-clients_6.2.29-1_amd64.deb
-  wget https://www.foundationdb.org/downloads/6.2.29/ubuntu/installers/foundationdb-server_6.2.29-1_amd64.deb
+  wget https://www.foundationdb.org/downloads/6.3.9/ubuntu/installers/foundationdb-clients_6.3.9-1_amd64.deb
+  wget https://www.foundationdb.org/downloads/6.3.9/ubuntu/installers/foundationdb-server_6.3.9-1_amd64.deb
   dpkg -i ./foundationdb*deb
   pkill -f fdb || true
   pkill -f foundation || true
   rm -rf ./foundationdb*deb
 else
-  apt install -y cmake mono-devel ninja-build libboost-all-dev liblz4-dev dos2unix fakeroot liblz4-1
+  apt install --no-install-recommends -y cmake mono-devel ninja-build libboost-all-dev liblz4-dev dos2unix fakeroot liblz4-1
   git clone https://github.com/apple/foundationdb/
-  cd foundationdb && git checkout 6.3.11
+  cd foundationdb && git checkout 6.3.9
   mkdir .build && cd .build
   cmake -G Ninja ..
   ninja -j2
diff --git a/bin/apt-erlang.sh b/bin/apt-erlang.sh
index 955c1a8..81a7c9e 100755
--- a/bin/apt-erlang.sh
+++ b/bin/apt-erlang.sh
@@ -55,7 +55,7 @@ Version: 2:${ERLANGVERSION}
 Description: Fake $1 package to appease package builder
 EOF
   equivs-build $1-control
-  apt install -y ./$1*.deb
+  apt install --no-install-recommends -y ./$1*.deb
   rm $1-control $1*.deb
 }
 
@@ -64,19 +64,19 @@ apt-get update || true
 
 if [ "${ERLANGVERSION}" = "default" ]
 then
-  apt-get update && apt-get install -y erlang-nox erlang-dev erlang erlang-eunit erlang-dialyzer
+  apt-get update && apt-get install --no-install-recommends -y erlang-nox erlang-dev erlang erlang-eunit erlang-dialyzer
 elif [ "${ARCH}" = x86_64 ] && [ "${ERLANGVERSION}" != "all" ]
 then
-  wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
-  dpkg -i erlang-solutions_1.0_all.deb
-  rm erlang-solutions_1.0_all.deb
+  wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
+  dpkg -i erlang-solutions_*_all.deb
+  rm erlang-solutions_*_all.deb
   # bionic is broken...
   sed -i 's/debian  contrib/debian ${VERSION} contrib/' /etc/apt/sources.list.d/erlang-solutions.list
   if [[ ${ERLANGVERSION} == "19.3.6" && ${VERSION} == "bionic" ]]; then
     ERLANGVERSION=19.3.6.8
   fi
   apt-get update || true
-  apt-get install -y esl-erlang=1:${ERLANGVERSION} || true
+  apt-get install --no-install-recommends -y esl-erlang=1:${ERLANGVERSION} || true
 fi
 
 # fallback to source install if all else fails
diff --git a/bin/detect-os.sh b/bin/detect-os.sh
index f664f33..83ffb51 100755
--- a/bin/detect-os.sh
+++ b/bin/detect-os.sh
@@ -68,7 +68,7 @@ case "${OSTYPE}" in
     # and finally some rough heuristics
     if [[ -f /etc/redhat-release ]]; then
       # /etc/redhat-release is so inconsistent, we use rpm instead
-      rhelish=$(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)' 2>/dev/null | head -1)
+      rhelish=$(rpm -qa '(redhat|sl|slf|centos|centos-linux|oraclelinux)-release(|-server|-workstation|-client|-computenode)' 2>/dev/null | head -1)
       if [[ $rhelish ]]; then
         ID=${ID:-$(echo ${rhelish} | awk -F'-' '{print tolower($1)}')}
         VERSION_ID=${VERSION_ID:-$(echo ${rhelish} | sed -E 's/([^[:digit:]]+)([[:digit:]]+)(.*)/\2/' )}
diff --git a/bin/yum-dependencies.sh b/bin/yum-dependencies.sh
index ae3a5e4..9174c03 100755
--- a/bin/yum-dependencies.sh
+++ b/bin/yum-dependencies.sh
@@ -89,7 +89,7 @@ yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-${VERSI
 # PowerTools for CentOS 8
 if [[ ${VERSION_ID} -gt 7 ]]; then
   dnf install -y 'dnf-command(config-manager)'
-  dnf config-manager --set-enabled PowerTools
+  dnf config-manager --set-enabled powertools
   yum update -y
 fi
 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
@@ -200,12 +200,12 @@ fi
 
 # FoundationDB
 if [[ ${VERSION_ID} -eq 6 ]]; then
-  wget https://www.foundationdb.org/downloads/6.2.29/rhel6/installers/foundationdb-clients-6.2.29-1.el6.x86_64.rpm
-  wget https://www.foundationdb.org/downloads/6.2.29/rhel6/installers/foundationdb-server-6.2.29-1.el6.x86_64.rpm
+  wget https://www.foundationdb.org/downloads/6.3.9/rhel6/installers/foundationdb-clients-6.3.29-1.el6.x86_64.rpm
+  wget https://www.foundationdb.org/downloads/6.3.9/rhel6/installers/foundationdb-server-6.3.29-1.el6.x86_64.rpm
   yum --nogpgcheck localinstall -y foundationdb*rpm
 else
-  wget https://www.foundationdb.org/downloads/6.2.29/rhel7/installers/foundationdb-clients-6.2.29-1.el7.x86_64.rpm
-  wget https://www.foundationdb.org/downloads/6.2.29/rhel7/installers/foundationdb-server-6.2.29-1.el7.x86_64.rpm
+  wget https://www.foundationdb.org/downloads/6.3.9/rhel7/installers/foundationdb-clients-6.3.29-1.el7.x86_64.rpm
+  wget https://www.foundationdb.org/downloads/6.3.9/rhel7/installers/foundationdb-server-6.3.29-1.el7.x86_64.rpm
   # Buggy FoundationDB packages require this workaround
   rpm -i --nodeps ./foundationdb*rpm
 fi
diff --git a/build.sh b/build.sh
index 3a19dbf..083b09f 100755
--- a/build.sh
+++ b/build.sh
@@ -37,9 +37,14 @@ SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 # there...but be aware Erlang packages may be missing on
 # some platforms!
 
+# References:
+#    https://wiki.debian.org/LTS
+#    https://ubuntu.com/about/release-cycle
+#    https://access.redhat.com/support/policy/updates/errata/ (same for CentOS)
+#    also https://endoflife.software/operating-systems/linux/centos
 DEBIANS="debian-stretch debian-buster"
 UBUNTUS="ubuntu-xenial ubuntu-bionic ubuntu-focal"
-CENTOSES="centos-6 centos-7 centos-8"
+CENTOSES="centos-7 centos-8"
 ERLANGALL_BASE="debian-buster"
 XPLAT_BASE="debian-buster"
 # XPLAT_ARCHES="arm64v8 ppc64le"
@@ -69,15 +74,24 @@ check-envs() {
   fi
 }
 
+split-os-ver() {
+  OLDIFS=$IFS
+  IFS='-' tokens=( $1 )
+  IFS=$OLDIFS
+  os=${tokens[0]}
+  version=${tokens[1]}
+}
+
 build-base-platform() {
   check-envs
+  split-os-ver $1
   # invoke as build-base <plat>
   # base images never get JavaScript, nor Erlang
-  docker build -f dockerfiles/$1 \
+  docker build -f dockerfiles/${os}-${version} \
       --build-arg js=nojs \
       --build-arg erlang=noerlang \
       $buildargs \
-      --tag couchdbdev/${CONTAINERARCH}$1-base \
+      --tag apache/couchdbci-${os}:${CONTAINERARCH}${version}-base \
       ${SCRIPTPATH}
 }
 
@@ -107,23 +121,19 @@ build-platform() {
   check-envs
   find-erlang-version $1
   pull-os-image $1
-  docker build -f dockerfiles/$1 \
+  split-os-ver $1
+  docker build -f dockerfiles/${os}-${version} \
       $buildargs \
       --no-cache \
-      --tag couchdbdev/${CONTAINERARCH}$1-erlang-${ERLANGVERSION} \
+      --tag apache/couchdbci-${os}:${CONTAINERARCH}${version}-erlang-${ERLANGVERSION} \
       ${SCRIPTPATH}
+  unset ERLANGVERSION
 }
 
 clean() {
-  docker rmi couchdbdev/$1 -f || true
-}
-
-clean-all() {
-  for plat in $DEBIANS $UBUNTUS $CENTOSES; do
-    find-erlang-version $plat
-    clean $plat-erlang-${ERLANGVERSION}
-    clean $plat-base
-  done
+  check-envs
+  split-os-ver $1
+  docker rmi apache/couchdbci-${os} -f || true
 }
 
 upload-platform() {
@@ -134,7 +144,8 @@ upload-platform() {
     exit 1
   fi
   find-erlang-version $1
-  docker push couchdbdev/$1-erlang-${ERLANGVERSION}
+  split-os-ver $1
+  docker push apache/couchdbci-${os}:${version}-erlang-${ERLANGVERSION}
 }
 
 build-test-couch() {
@@ -156,7 +167,10 @@ case "$1" in
     ;;
   clean-all)
     # removes all known target platform images
-    clean-all
+    # docker rmi apache/couchdbci-ubuntu should remove all tags under that...
+    for plat in $DEBIANS $UBUNTUS $CENTOSES; do
+      clean $plat
+    done
     ;;
   base)
     # Build base image for requested target platform
@@ -191,10 +205,10 @@ case "$1" in
     for plat in $DEBIANS $UBUNTUS $CENTOSES; do
       build-platform $plat $*
     done
-    ERLANGVERSION=all build-platform $ERLANGALL_BASE
     for arch in $XPLAT_ARCHES; do
       CONTAINERARCH=$arch build-platform $XPLAT_BASE
     done
+    ERLANGVERSION=all build-platform $ERLANGALL_BASE
     ;;
   platform-upload)
     shift
@@ -206,9 +220,9 @@ case "$1" in
       upload-platform $plat $*
     done
     for arch in $XPLAT_ARCHES; do
-      upload-platform $arch-$XPLAT_BASE $*
+      CONTAINERARCH=$arch upload-platform $arch-$XPLAT_BASE $*
     done
-    ERLANGVERSION=all upload-platform debian-buster
+    ERLANGVERSION=all upload-platform $ERLANGALL_BASE
     ;;
   couch)
     # build and test CouchDB on <plat>
@@ -233,13 +247,7 @@ $0 <command> [OPTIONS]
 
 Recognized commands:
   clean <plat>          Removes all images for <plat>.
-  clean-all             Removes all images for all platforms & base images.
-
-  base <plat>           Builds the base (no JS/Erlang) image for <plat>.
-  base-all              Builds all base (no JS/Erlang) images.
-  *base-upload          Uploads the specified couchdbdev/*-base image 
-                        to Docker Hub.
-  *base-upload-all      Uploads all the couchdbdev/*-base images.
+  clean-all             Removes all images for all platforms.
 
   platform <plat>       Builds the image for <plat> with Erlang & JS support.
   platform-all          Builds all images with Erlang and JS support.
diff --git a/dockerfiles/centos-6 b/dockerfiles/centos-6
index 33edcc1..cb1a2c1 100644
--- a/dockerfiles/centos-6
+++ b/dockerfiles/centos-6
@@ -24,9 +24,9 @@ ARG js=js
 # Choose whether to install Erlang, default yes
 ARG erlang=erlang
 # Select version of Node, Erlang and Elixir to install
-ARG erlangversion=20.3.8.25-1
-ARG elixirversion=v1.9.1
-ARG nodeversion=10
+ARG erlangversion=20.3.8.26-1
+ARG elixirversion=v1.9.4
+ARG nodeversion=14
 
 # Create Jenkins user and group
 RUN groupadd --gid 910 jenkins; \
diff --git a/dockerfiles/centos-7 b/dockerfiles/centos-7
index 1515390..4e449c5 100644
--- a/dockerfiles/centos-7
+++ b/dockerfiles/centos-7
@@ -24,9 +24,9 @@ ARG js=js
 # Choose whether to install Erlang, default yes
 ARG erlang=erlang
 # Select version of Node, Erlang and Elixir to install
-ARG erlangversion=20.3.8.25-1
-ARG elixirversion=v1.9.1
-ARG nodeversion=10
+ARG erlangversion=20.3.8.26-1
+ARG elixirversion=v1.9.4
+ARG nodeversion=14
 
 # Create Jenkins user and group
 RUN groupadd --gid 910 jenkins; \
diff --git a/dockerfiles/centos-8 b/dockerfiles/centos-8
index 885b08f..6423867 100644
--- a/dockerfiles/centos-8
+++ b/dockerfiles/centos-8
@@ -24,9 +24,9 @@ ARG js=js
 # Choose whether to install Erlang, default yes
 ARG erlang=erlang
 # Select version of Node, Erlang and Elixir to install
-ARG erlangversion=20.3.8.25-1
-ARG elixirversion=v1.9.1
-ARG nodeversion=10
+ARG erlangversion=20.3.8.26-1
+ARG elixirversion=v1.9.4
+ARG nodeversion=14
 
 # Create Jenkins user and group
 RUN groupadd --gid 910 jenkins; \
diff --git a/dockerfiles/debian-buster b/dockerfiles/debian-buster
index ca662c5..58c2b95 100644
--- a/dockerfiles/debian-buster
+++ b/dockerfiles/debian-buster
@@ -27,10 +27,10 @@ ARG js=js
 # Choose whether to install Erlang, default yes
 ARG erlang=erlang
 # Select version of Node, Erlang and Elixir
-ARG erlangversion=20.3.8.25-1
-ARG kerlversions=20.3.8.11,20.3.8.25,22.2.3
-ARG elixirversion=v1.9.1
-ARG nodeversion=10
+ARG erlangversion=20.3.8.26-1
+ARG kerlversions=20.3.8.26,21.3.8.22,22.3.4.17,23.3.1
+ARG elixirversion=v1.9.4
+ARG nodeversion=14
 
 # Create Jenkins user and group
 RUN groupadd --gid 910 jenkins; \
diff --git a/dockerfiles/debian-jessie b/dockerfiles/debian-jessie
deleted file mode 100644
index 205f219..0000000
--- a/dockerfiles/debian-jessie
+++ /dev/null
@@ -1,56 +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
-
-# NOTE: These are intended to be built using the arguments as
-# described in ../build.sh. See that script for more details.
-
-FROM debian:jessie
-
-# Choose whether to install SpiderMonkey 1.8.5, default yes
-ARG js=js
-# Choose whether to install Erlang, default yes
-ARG erlang=erlang
-# Select version of Node, Erlang and Elixir to install
-ARG erlangversion=20.3.8.25-1
-ARG elixirversion=v1.9.1
-ARG nodeversion=10
-
-# Create Jenkins user and group
-RUN groupadd --gid 910 jenkins; \
-  useradd --uid 910 --gid jenkins --create-home jenkins
-
-# Copy couchdb-ci repo into root's home directory
-ADD --chown=root:root bin /root/couchdb-ci/bin/
-ADD --chown=root:root files /root/couchdb-ci/files/
-
-# Jenkins builds in /usr/src/couchdb.
-RUN mkdir -p /usr/src/couchdb; \
-  chown -R jenkins:jenkins /usr/src/couchdb
-
-# Install all dependencies, and optionally SM 1.8.5
-# This allows us to use the same Dockerfile for building SM
-RUN ERLANGVERSION=$erlangversion \
-  ELIXIRVERSION=$elixirversion \
-  NODEVERSION=$nodeversion \
-  /root/couchdb-ci/bin/install-dependencies.sh $js $erlang
-
-# Allow Jenkins to sudo
-RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/jenkins
-
-USER jenkins
-
-# overwrite this with 'CMD []' in a dependent Dockerfile
-CMD ["/bin/bash"]
diff --git a/dockerfiles/debian-stretch b/dockerfiles/debian-stretch
index 9d1213d..23a4be5 100644
--- a/dockerfiles/debian-stretch
+++ b/dockerfiles/debian-stretch
@@ -27,9 +27,9 @@ ARG js=js
 # Choose whether to install Erlang, default yes
 ARG erlang=erlang
 # Select version of Node, Erlang and Elixir
-ARG erlangversion=20.3.8.25-1
-ARG elixirversion=v1.9.1
-ARG nodeversion=10
+ARG erlangversion=20.3.8.26-1
+ARG elixirversion=v1.9.4
+ARG nodeversion=14
 
 # Create Jenkins user and group
 RUN groupadd --gid 910 jenkins; \
diff --git a/dockerfiles/ubuntu-bionic b/dockerfiles/ubuntu-bionic
index 5d11835..9c62983 100644
--- a/dockerfiles/ubuntu-bionic
+++ b/dockerfiles/ubuntu-bionic
@@ -24,9 +24,9 @@ ARG js=js
 # Choose whether to install Erlang, default yes
 ARG erlang=erlang
 # Select version of Node, Erlang and Elixir to install
-ARG erlangversion=20.3.8.25-1
-ARG elixirversion=v1.9.1
-ARG nodeversion=10
+ARG erlangversion=20.3.8.26-1
+ARG elixirversion=v1.9.4
+ARG nodeversion=14
 
 # Create Jenkins user and group
 RUN groupadd --gid 910 jenkins; \
diff --git a/dockerfiles/ubuntu-focal b/dockerfiles/ubuntu-focal
index 16cff23..8deea2c 100644
--- a/dockerfiles/ubuntu-focal
+++ b/dockerfiles/ubuntu-focal
@@ -24,9 +24,9 @@ ARG js=js
 # Choose whether to install Erlang, default yes
 ARG erlang=erlang
 # Select version of Node, Erlang and Elixir to install
-ARG erlangversion=20.3.8.25-1
-ARG elixirversion=v1.9.1
-ARG nodeversion=10
+ARG erlangversion=20.3.8.26-1
+ARG elixirversion=v1.9.4
+ARG nodeversion=14
 
 # Create Jenkins user and group
 RUN groupadd --gid 910 jenkins; \
diff --git a/dockerfiles/ubuntu-trusty b/dockerfiles/ubuntu-trusty
index 137dd2e..323b167 100644
--- a/dockerfiles/ubuntu-trusty
+++ b/dockerfiles/ubuntu-trusty
@@ -24,9 +24,9 @@ ARG js=js
 # Choose whether to install Erlang, default yes
 ARG erlang=erlang
 # Select version of Node, Erlang and Elixir to install
-ARG erlangversion=20.3.8.25-1
-ARG elixirversion=v1.9.1
-ARG nodeversion=10
+ARG erlangversion=20.3.8.26-1
+ARG elixirversion=v1.9.4
+ARG nodeversion=14
 
 # Create Jenkins user and group
 RUN groupadd --gid 910 jenkins; \
diff --git a/dockerfiles/ubuntu-xenial b/dockerfiles/ubuntu-xenial
index afe4863..12a7073 100644
--- a/dockerfiles/ubuntu-xenial
+++ b/dockerfiles/ubuntu-xenial
@@ -24,9 +24,9 @@ ARG js=js
 # Choose whether to install Erlang, default yes
 ARG erlang=erlang
 # Select version of Node, Erlang and Elixir to install
-ARG erlangversion=20.3.8.25-1
-ARG elixirversion=v1.9.1
-ARG nodeversion=10
+ARG erlangversion=20.3.8.26-1
+ARG elixirversion=v1.9.4
+ARG nodeversion=14
 
 # Create Jenkins user and group
 RUN groupadd --gid 910 jenkins; \