diff --git a/.semaphore/cp_dockerfile_build.yml b/.semaphore/cp_dockerfile_build.yml
index 37f4a35166..d56e49f7f5 100644
--- a/.semaphore/cp_dockerfile_build.yml
+++ b/.semaphore/cp_dockerfile_build.yml
@@ -25,7 +25,7 @@ global_job_config:
commands:
- checkout
- if [[ $SEMAPHORE_GIT_BRANCH =~ ^7\..* ]]; then sem-version java 8; else sem-version java 17; fi
- - sem-version python 3.9
+ - sem-version python 3.14
- . vault-setup
- . cache-maven restore
- pip install tox==3.28.0
diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml
index 444cd99c77..12d0709b4c 100644
--- a/.semaphore/semaphore.yml
+++ b/.semaphore/semaphore.yml
@@ -25,7 +25,7 @@ global_job_config:
commands:
- checkout
- if [[ $SEMAPHORE_GIT_BRANCH =~ ^7\..* ]]; then sem-version java 8; else sem-version java 17; fi
- - sem-version python 3.9
+ - sem-version python 3.14
- . vault-setup
- . cache-maven restore
- pip install tox==3.28.0
diff --git a/base-java/requirements.txt b/base-java/requirements.txt
index 614c4c93e0..da1f230f18 100644
--- a/base-java/requirements.txt
+++ b/base-java/requirements.txt
@@ -1 +1 @@
-git+https://github.com/confluentinc/confluent-docker-utils@v0.0.162
+git+https://github.com/confluentinc/confluent-docker-utils@v0.0.169
diff --git a/base-java/tox.ini b/base-java/tox.ini
index af5b6fe10e..91aaca04a9 100644
--- a/base-java/tox.ini
+++ b/base-java/tox.ini
@@ -6,10 +6,10 @@ toxworkdir = /var/tmp
deps =
-rrequirements.txt
flake8
- pytest == 4.6.4
- pytest-xdist == 1.29.0
- pytest-cov == 2.7.1
- sphinx!=1.2b2,<2.0.0
+ pytest ~= 8.0.0
+ pytest-xdist ~= 3.0.0
+ pytest-cov ~= 4.0.0
+ sphinx ~= 7.0.0
install_command = pip install -U {packages}
recreate = True
skipsdist = True
diff --git a/base/Dockerfile.ubi9 b/base/Dockerfile.ubi9
index 7eeb662384..32fdbbcac3 100644
--- a/base/Dockerfile.ubi9
+++ b/base/Dockerfile.ubi9
@@ -54,7 +54,7 @@ ENV USE_LOG4J_2="True"
ARG OPENSSL_VERSION=""
ARG WGET_VERSION=""
ARG NETCAT_VERSION=""
-ARG PYTHON39_VERSION=""
+ARG PYTHON314_VERSION=""
ARG TAR_VERSION=""
ARG PROCPS_VERSION=""
ARG KRB5_WORKSTATION_VERSION=""
@@ -63,12 +63,13 @@ ARG HOSTNAME_VERSION=""
ARG XZ_LIBS_VERSION=""
ARG GLIBC_VERSION=""
ARG CURL_VERSION=""
+ARG FINDUTILS_VERSION=""
+ARG CRYPTO_POLICIES_SCRIPTS_VERSION=""
# Temurin JDK version
ARG TEMURIN_JDK_VERSION=""
# Python Module Versions
-ARG PYTHON_PIP_VERSION=""
ARG PYTHON_SETUPTOOLS_VERSION=""
# Confluent Docker Utils Version (Namely the tag or branch to grab from git to install)
@@ -77,6 +78,58 @@ ARG PYTHON_CONFLUENT_DOCKER_UTILS_VERSION="master"
# This can be overriden for an offline/air-gapped builds
ARG PYTHON_CONFLUENT_DOCKER_UTILS_INSTALL_SPEC="git+https://github.com/confluentinc/confluent-docker-utils@${PYTHON_CONFLUENT_DOCKER_UTILS_VERSION}"
+# Install Python 3.14 from source FIRST
+RUN microdnf --nodocs -y install yum \
+ && yum --nodocs install -y --setopt=install_weak_deps=False \
+ gcc \
+ gcc-c++ \
+ make \
+ tar \
+ openssl-devel \
+ ca-certificates \
+ bzip2-devel \
+ libffi-devel \
+ zlib-devel \
+ sqlite-devel \
+ findutils \
+ python3-pip \
+ && python3 -m pip install --upgrade pip \
+ && python3 -m pip install sigstore \
+ && curl -fSLO https://www.python.org/ftp/python/${PYTHON314_VERSION}/Python-${PYTHON314_VERSION}.tgz \
+ && curl -fSLO https://www.python.org/ftp/python/${PYTHON314_VERSION}/Python-${PYTHON314_VERSION}.tgz.sigstore \
+ && python3 -m sigstore verify identity \
+ --bundle Python-${PYTHON314_VERSION}.tgz.sigstore \
+ --cert-identity hugo@python.org \
+ --cert-oidc-issuer https://github.com/login/oauth \
+ Python-${PYTHON314_VERSION}.tgz \
+ && rm -f Python-${PYTHON314_VERSION}.tgz.sigstore \
+ && python3 -m pip uninstall -y sigstore \
+ && yum remove -y python3-pip \
+ && rm -f /usr/local/bin/pip /usr/local/bin/pip3 /usr/local/bin/pip3.9 \
+ && tar -xzf Python-${PYTHON314_VERSION}.tgz \
+ && cd Python-${PYTHON314_VERSION} \
+ && ./configure --enable-optimizations \
+ --with-ensurepip=install \
+ --with-openssl=/usr \
+ --with-openssl-rpath=auto \
+ && make -j$(nproc) \
+ && make altinstall \
+ && cd .. \
+ && rm -rf Python-${PYTHON314_VERSION}* \
+ && rm -f /var/lib/alternatives/python /var/lib/alternatives/python3 /var/lib/alternatives/pip /var/lib/alternatives/pip3 \
+ && update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.14 100 \
+ && update-alternatives --install /usr/bin/python python /usr/local/bin/python3.14 100 \
+ && update-alternatives --install /usr/bin/pip3 pip3 /usr/local/bin/pip3.14 100 \
+ && update-alternatives --install /usr/bin/pip pip /usr/local/bin/pip3.14 100 \
+ && python3 -c "import ssl; print('SSL module loaded successfully')" \
+ && python --version \
+ && python3 --version \
+ && pip --version \
+ && pip3 --version \
+ && yum remove -y gcc gcc-c++ make openssl-devel bzip2-devel libffi-devel zlib-devel sqlite-devel \
+ && yum clean all \
+ && rm -rf /tmp/* /root/.cache
+
RUN printf "[temurin-jdk] \n\
name=temurin-jdk \n\
baseurl=https://adoptium.jfrog.io/artifactory/rpm/rhel/\$releasever/\$basearch \n\
@@ -92,8 +145,6 @@ RUN microdnf --nodocs -y install yum \
"openssl${OPENSSL_VERSION}" \
"wget${WGET_VERSION}" \
"nmap-ncat${NETCAT_VERSION}" \
- "python3${PYTHON39_VERSION}" \
- "python3-pip${PYTHON_PIP_VERSION}" \
"tar${TAR_VERSION}" \
"procps-ng${PROCPS_VERSION}" \
"krb5-workstation${KRB5_WORKSTATION_VERSION}" \
@@ -106,8 +157,6 @@ RUN microdnf --nodocs -y install yum \
"findutils${FINDUTILS_VERSION}" \
"crypto-policies-scripts${CRYPTO_POLICIES_SCRIPTS_VERSION}" \
"temurin-21-jdk${TEMURIN_JDK_VERSION}" \
- && alternatives --install /usr/bin/python python /usr/bin/python3 2000 \
- && alternatives --set python /usr/bin/python3 \
&& python3 -m pip install --upgrade "setuptools${PYTHON_SETUPTOOLS_VERSION}" \
&& python3 -m pip install --prefer-binary --prefix=/usr/local --upgrade "${PYTHON_CONFLUENT_DOCKER_UTILS_INSTALL_SPEC}" \
&& yum remove -y git \
diff --git a/base/pom.xml b/base/pom.xml
index 40d653955c..b3445dee76 100644
--- a/base/pom.xml
+++ b/base/pom.xml
@@ -132,7 +132,7 @@
-${ubi9-minimal.openssl.version}
-${ubi9-minimal.wget.version}
-${ubi9-minimal.nmap-ncat.version}
- -${ubi9-minimal.python3.version}
+ ${python.python314.version}
-${ubi9-minimal.tar.version}
-${ubi9-minimal.procps-ng.version}
-${ubi9-minimal.krb5-workstation.version}
@@ -141,9 +141,8 @@
-${ubi9-minimal.xz-libs.version}
-${ubi9-minimal.glibc.version}
-${ubi9-minimal.findutils.version}
- -${ubi8-minimal.crypto-policies-scripts.version}
+ -${ubi9-minimal.crypto-policies-scripts.version}
-${ubi9-minimal.temurin-21-jdk.version}
- -${ubi9-minimal.python3-pip.version}
==${python.setuptools.version}
${git-repo.confluent-docker-utils.tag}
${docker.skip-security-update-check}
@@ -163,7 +162,7 @@
-${ubi9-minimal.openssl.version}
-${ubi9-minimal.wget.version}
-${ubi9-minimal.nmap-ncat.version}
- -${ubi9-minimal.python3.version}
+ ${python.python314.version}
-${ubi9-minimal.tar.version}
-${ubi9-minimal.procps-ng.version}
-${ubi9-minimal.krb5-workstation.version}
@@ -175,7 +174,6 @@
-${ubi9-minimal.findutils.version}
-${ubi9-minimal.crypto-policies-scripts.version}
-${ubi9-minimal.temurin-21-jdk.version}
- -${ubi9-minimal.python3-pip.version}
==${python.setuptools.version}
diff --git a/base/requirements.txt b/base/requirements.txt
index 614c4c93e0..da1f230f18 100644
--- a/base/requirements.txt
+++ b/base/requirements.txt
@@ -1 +1 @@
-git+https://github.com/confluentinc/confluent-docker-utils@v0.0.162
+git+https://github.com/confluentinc/confluent-docker-utils@v0.0.169
diff --git a/base/tox.ini b/base/tox.ini
index af5b6fe10e..91aaca04a9 100644
--- a/base/tox.ini
+++ b/base/tox.ini
@@ -6,10 +6,10 @@ toxworkdir = /var/tmp
deps =
-rrequirements.txt
flake8
- pytest == 4.6.4
- pytest-xdist == 1.29.0
- pytest-cov == 2.7.1
- sphinx!=1.2b2,<2.0.0
+ pytest ~= 8.0.0
+ pytest-xdist ~= 3.0.0
+ pytest-cov ~= 4.0.0
+ sphinx ~= 7.0.0
install_command = pip install -U {packages}
recreate = True
skipsdist = True
diff --git a/pom.xml b/pom.xml
index ec4134684d..e4cc1d975d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -90,7 +90,6 @@
1.1.1k-15.el8_6
1.19.5-12.el8_10
7.92-2.el8_10
- 3.9.25-2.module+el8.10.0+23718+1842ae33
1.30-11.el8_10
3.3.15-14.el8
1.18.2-32.el8_10
@@ -102,13 +101,13 @@
4.6.0-24.el8_10
20230731-1.git3177e06.el8
17.0.18.0.0.8-0
- 20.2.4-9.module+el8.10.0+21329+8d76b841
+ 3.14.3
80.9.0
- v0.0.168
+ v0.0.169
v1.0.8
diff --git a/service.yml b/service.yml
index 867946e63e..f546b5d117 100644
--- a/service.yml
+++ b/service.yml
@@ -1,6 +1,6 @@
name: common-docker
lang: python
-lang_version: 3.9
+lang_version: "3.14"
git:
enable: true
semaphore: