Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions bin/apt-dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ apt-get update && apt-get install -y lsb-release
SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. ${SCRIPTPATH}/detect-arch.sh >/dev/null
. ${SCRIPTPATH}/detect-os.sh >/dev/null
debians='(bullseye|bookworm)'
debians='(bullseye|bookworm|trixie)'
ubuntus='(jammy|noble)'
echo "Detected Ubuntu/Debian version: ${VERSION_CODENAME} arch: ${ARCH}"

Expand Down Expand Up @@ -114,11 +114,13 @@ EOF
fi

# rest of python dependencies
if [ "${VERSION_CODENAME}" == "bookworm" -o "${VERSION_CODENAME}" == "noble" ]; then
# On Debian bookworm and Ubuntu noble, need the --break-system-package to into to default system location
apt-get -y --no-install-recommends install sphinx-rtd-theme-common python3-nose python3-requests python3-hypothesis
# Since Debian bookworm and Ubuntu noble, to install python packages as system packages, add the "python3-"prefix
if [ "${VERSION_CODENAME}" == "bookworm" ] || [ "${VERSION_CODENAME}" == "noble" ]; then
apt-get -y --no-install-recommends install python3-nose python3-requests python3-hypothesis
elif [ "${VERSION_CODENAME}" == "trixie" ]; then
apt-get -y --no-install-recommends install python3-nose2 python3-requests python3-hypothesis
else
pip3 --default-timeout=10000 install --upgrade sphinx_rtd_theme nose requests hypothesis==3.79.0
pip3 --default-timeout=10000 install --upgrade nose requests hypothesis==3.79.0
fi

# relaxed lintian rules for CouchDB
Expand All @@ -144,6 +146,7 @@ if [ "$1" != "nojs" ]; then
[ "${VERSION_CODENAME}" != "jammy" ] && \
[ "${VERSION_CODENAME}" != "bullseye" ] && \
[ "${VERSION_CODENAME}" != "bookworm" ] && \
[ "${VERSION_CODENAME}" != "trixie" ] && \
[ "${ARCH}" != "s390x" ]; then
curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor | tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1
source /etc/os-release
Expand All @@ -165,6 +168,9 @@ if [ "$1" != "nojs" ]; then
if [ "${VERSION_CODENAME}" == "bookworm" ]; then
apt-get install --no-install-recommends -y libmozjs-78-dev
fi
if [ "${VERSION_CODENAME}" == "trixie" ]; then
apt-get install --no-install-recommends -y libmozjs-128-dev
fi
else
# install js build-time dependencies only
# we can't add the CouchDB repo here because the plat may not exist yet
Expand Down
2 changes: 1 addition & 1 deletion build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# When updating the images, consider updating pull-all-couchdbdev-docker
# script as well
#
DEBIANS="debian-bullseye debian-bookworm"
DEBIANS="debian-bullseye debian-bookworm debian-trixie"
UBUNTUS="ubuntu-jammy ubuntu-noble"
CENTOSES="almalinux-8 almalinux-9"

Expand Down
68 changes: 68 additions & 0 deletions dockerfiles/debian-trixie
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# 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.

ARG repository=debian

FROM $repository:trixie

# Install Java
ENV JAVA_HOME=/opt/java/openjdk
COPY --from=eclipse-temurin:21 $JAVA_HOME $JAVA_HOME
ENV PATH="${JAVA_HOME}/bin:${PATH}"

# These are needed for the Clouseau integration
ENV CLOUSEAU_JAVA_HOME=/opt/java/openjdk8
COPY --from=ibm-semeru-runtimes:open-8-jre /opt/java/openjdk $CLOUSEAU_JAVA_HOME
ENV PATH=/usr/local/lib/erlang/bin:"${PATH}"

# 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
ARG erlangversion=26.2.5.11
ARG elixirversion=v1.18.4
ARG nodeversion=20

# 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"]
17 changes: 9 additions & 8 deletions pull-all-couchdbdev-docker
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ DOCKER_ORG="apache"

# These are the images that are currently being used, so don't `docker rmi` them on cleanup.
KEEP_IMAGES=(
couchdbci-debian:bookworm-erlang:27.3.4.1
couchdbci-debian:bookworm-erlang:28.0.1
couchdbci-debian:bookworm-erlang-26.2.5.13
couchdbci-debian:bullseye-erlang:26.2.5.13
couchdbci-ubuntu:noble-erlang-26.2.5.13
couchdbci-ubuntu:jammy-erlang-26.2.5.13
couchdbci-centos:9-erlang-26.2.5.13
couchdbci-centos:8-erlang-26.2.5.13
couchdbci-debian:trixie-erlang:28.0.2
couchdbci-debian:trixie-erlang:27.3.4.2
couchdbci-debian:trixie-erlang-26.2.5.14
couchdbci-debian:bookworm-erlang-26.2.5.14
couchdbci-debian:bullseye-erlang:26.2.5.14
couchdbci-ubuntu:noble-erlang-26.2.5.14
couchdbci-ubuntu:jammy-erlang-26.2.5.14
couchdbci-centos:9-erlang-26.2.5.14
couchdbci-centos:8-erlang-26.2.5.14
Comment on lines +7 to +15
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know if this was right to use trixie as new default for all erlang versions? Additional I think we need to wait until apache/couchdb#5626 is merged ...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure about the multiarch PR, I forgot what that is about already :-)

For trixie but we can start with a CI image first before making it the new default. The main thing is to run the buildx script to see if it can build and get uploaded to docker hub. If it can then we can merge this PR. This PR on its own won't do anything unless the image is already built and pushed.

)

for image in ${KEEP_IMAGES[*]}
Expand Down