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; \