From 0a9c3a07eb8de3ce841f52ec7bf4c4c81150250e Mon Sep 17 00:00:00 2001 From: Shubhika Garg Date: Thu, 5 Feb 2026 15:30:34 +0100 Subject: [PATCH] ci: Pull `ubuntu:noble` image from our internal docker registry to build ubuntu images - This is to overcome the issue of pull rate limits from DockerHub - Make Ubuntu base image configurable via build-arg --- ci-scripts/cls_containerize.py | 10 ++++++++-- docker/Dockerfile.base.ubuntu | 4 +++- docker/Dockerfile.base.ubuntu.cross-arm64 | 3 ++- docker/Dockerfile.eNB.ubuntu | 4 +++- docker/Dockerfile.gNB.aerial.ubuntu | 3 ++- docker/Dockerfile.gNB.aerial.ubuntu.sanitize-address | 4 +++- docker/Dockerfile.gNB.aw2s.ubuntu | 3 ++- docker/Dockerfile.gNB.fhi72.ubuntu | 3 ++- docker/Dockerfile.gNB.ubuntu | 3 ++- docker/Dockerfile.lteRU.ubuntu | 3 ++- docker/Dockerfile.lteUE.ubuntu | 6 ++++-- docker/Dockerfile.nr-cuup.ubuntu | 5 +++-- docker/Dockerfile.nrORU.fhi72.ubuntu | 5 +++-- docker/Dockerfile.nrUE.ubuntu | 3 ++- 14 files changed, 41 insertions(+), 18 deletions(-) diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py index 7826a32a61..ac76f3083b 100644 --- a/ci-scripts/cls_containerize.py +++ b/ci-scripts/cls_containerize.py @@ -372,12 +372,16 @@ class Containerize(): for image,pattern,name,option in imageNames: cmd.run(f"{self.cli} image rm {name}:{imageTag}", reportNonZero=False) + cmd.run(f'docker login -u oaicicd -p oaicicd {DEFAULT_REGISTRY}') + ubuntuImage = "ubuntu:noble" # Build the base image only on Push Events (not on Merge Requests) # On when the base image docker file is being modified. if forceBaseImageBuild: cmd.run(f"{self.cli} image rm {baseImage}:{baseTag}") logfile = f'{lSourcePath}/cmake_targets/log/ran-base.docker.log' - cmd.run(f"{self.cli} build {self.cliBuildOptions} --target {baseImage} --tag {baseImage}:{baseTag} --file docker/Dockerfile.base{self.dockerfileprefix} . &> {logfile}", timeout=1600) + if self.host == 'Ubuntu': + option = f" --build-arg UBUNTU_IMAGE={DEFAULT_REGISTRY}/{ubuntuImage}" + cmd.run(f"{self.cli} build {self.cliBuildOptions} --target {baseImage} --tag {baseImage}:{baseTag} --file docker/Dockerfile.base{self.dockerfileprefix} {option} . &> {logfile}", timeout=1600) t = ("ran-base", archiveArtifact(cmd, ctx, logfile)) log_files.append(t) @@ -420,6 +424,8 @@ class Containerize(): if image == 'oai-gnb-aerial': cmd.run('cp -f /opt/nvidia-ipc/nvipc_src.2026.01.07.tar.gz .') logfile = f'{lSourcePath}/cmake_targets/log/{name}.docker.log' + if self.host == 'Ubuntu': + option = option + f" --build-arg UBUNTU_IMAGE={DEFAULT_REGISTRY}/{ubuntuImage}" ret = cmd.run(f'{self.cli} build {self.cliBuildOptions} --target {image} --tag {name}:{imageTag} --file docker/Dockerfile.{pattern}{self.dockerfileprefix} {option} . > {logfile} 2>&1', timeout=1200) t = (name, archiveArtifact(cmd, ctx, logfile)) log_files.append(t) @@ -446,7 +452,7 @@ class Containerize(): allImagesSize[name] = 'unknown' # Now pruning dangling images in between target builds cmd.run(f"{self.cli} image prune --force") - + cmd.run(f'docker logout {DEFAULT_REGISTRY}') # Remove all intermediate build images and clean up cmd.run(f"{self.cli} image rm ran-build:{imageTag} ran-build-asan:{imageTag} ran-build-fhi72:{imageTag} || true") cmd.run(f"{self.cli} volume prune --force") diff --git a/docker/Dockerfile.base.ubuntu b/docker/Dockerfile.base.ubuntu index b0eb5c4d32..e13170d303 100644 --- a/docker/Dockerfile.base.ubuntu +++ b/docker/Dockerfile.base.ubuntu @@ -26,7 +26,9 @@ #--------------------------------------------------------------------- -FROM ubuntu:noble AS ran-base +ARG UBUNTU_IMAGE=ubuntu:noble +FROM ${UBUNTU_IMAGE} AS ran-base + ARG NEEDED_GIT_PROXY ARG TARGETARCH ENV DEBIAN_FRONTEND=noninteractive diff --git a/docker/Dockerfile.base.ubuntu.cross-arm64 b/docker/Dockerfile.base.ubuntu.cross-arm64 index fa9918eda8..ba94199d18 100644 --- a/docker/Dockerfile.base.ubuntu.cross-arm64 +++ b/docker/Dockerfile.base.ubuntu.cross-arm64 @@ -26,7 +26,8 @@ #--------------------------------------------------------------------- # Very important, the noble image shall not be using mirrors. A lot of them do NOT support ARM64. -FROM ubuntu:noble AS ran-base +ARG UBUNTU_IMAGE=ubuntu:noble +FROM ${UBUNTU_IMAGE} AS ran-base ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe/Paris # Specifying a working version of SIMDE for ARM: diff --git a/docker/Dockerfile.eNB.ubuntu b/docker/Dockerfile.eNB.ubuntu index 6229bf9028..16a1e782a9 100644 --- a/docker/Dockerfile.eNB.ubuntu +++ b/docker/Dockerfile.eNB.ubuntu @@ -24,6 +24,7 @@ # Valid for Ubuntu 24.04 # #--------------------------------------------------------------------- +ARG UBUNTU_IMAGE=ubuntu:noble FROM ran-base:latest AS enb-base @@ -31,7 +32,8 @@ FROM ran-build:latest AS enb-build #start from scratch for target executable -FROM ubuntu:noble AS oai-enb +FROM ${UBUNTU_IMAGE} AS oai-enb + ARG BUILD_OPTION ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe/Paris diff --git a/docker/Dockerfile.gNB.aerial.ubuntu b/docker/Dockerfile.gNB.aerial.ubuntu index 980c909c4d..1e2b41a71d 100644 --- a/docker/Dockerfile.gNB.aerial.ubuntu +++ b/docker/Dockerfile.gNB.aerial.ubuntu @@ -25,6 +25,7 @@ # #--------------------------------------------------------------------- +ARG UBUNTU_IMAGE=ubuntu:noble FROM ran-base:latest AS ran-build RUN apt-get update && \ @@ -59,7 +60,7 @@ RUN /bin/sh oaienv && \ #start from scratch for target executable -FROM ubuntu:noble AS oai-gnb-aerial +FROM ${UBUNTU_IMAGE} AS oai-gnb-aerial ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe diff --git a/docker/Dockerfile.gNB.aerial.ubuntu.sanitize-address b/docker/Dockerfile.gNB.aerial.ubuntu.sanitize-address index 1792836b85..3357f4aab1 100644 --- a/docker/Dockerfile.gNB.aerial.ubuntu.sanitize-address +++ b/docker/Dockerfile.gNB.aerial.ubuntu.sanitize-address @@ -25,6 +25,8 @@ # #--------------------------------------------------------------------- +ARG UBUNTU_IMAGE=ubuntu:noble + FROM ran-base:latest AS ran-build RUN apt-get update && \ @@ -58,7 +60,7 @@ RUN /bin/sh oaienv && \ #start from scratch for target executable -FROM ubuntu:noble AS oai-gnb-aerial +FROM ${UBUNTU_IMAGE} AS oai-gnb-aerial ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe diff --git a/docker/Dockerfile.gNB.aw2s.ubuntu b/docker/Dockerfile.gNB.aw2s.ubuntu index 7826afd794..229c5ac4b9 100644 --- a/docker/Dockerfile.gNB.aw2s.ubuntu +++ b/docker/Dockerfile.gNB.aw2s.ubuntu @@ -25,6 +25,7 @@ # #--------------------------------------------------------------------- +ARG UBUNTU_IMAGE=ubuntu:noble FROM ran-base:latest AS gnb-base FROM ran-build:latest AS gnb-build @@ -38,7 +39,7 @@ RUN /bin/sh oaienv && \ ./build_oai -w AW2SORI -t Ethernet #start from scratch for target executable -FROM ubuntu:noble AS oai-gnb-aw2s +FROM ${UBUNTU_IMAGE} AS oai-gnb-aw2s ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe diff --git a/docker/Dockerfile.gNB.fhi72.ubuntu b/docker/Dockerfile.gNB.fhi72.ubuntu index 03e21e4688..6fbf84d460 100644 --- a/docker/Dockerfile.gNB.fhi72.ubuntu +++ b/docker/Dockerfile.gNB.fhi72.ubuntu @@ -24,6 +24,7 @@ # Valid for Ubuntu24.04 # #--------------------------------------------------------------------- +ARG UBUNTU_IMAGE=ubuntu:noble FROM ran-base:latest AS gnb-base @@ -31,7 +32,7 @@ FROM ran-build-fhi72:latest AS gnb-build #start from scratch for target executable -FROM ubuntu:noble AS oai-gnb +FROM ${UBUNTU_IMAGE} AS oai-gnb ARG BUILD_OPTION ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe diff --git a/docker/Dockerfile.gNB.ubuntu b/docker/Dockerfile.gNB.ubuntu index 9156ce98c8..ded38324d7 100644 --- a/docker/Dockerfile.gNB.ubuntu +++ b/docker/Dockerfile.gNB.ubuntu @@ -25,13 +25,14 @@ # #--------------------------------------------------------------------- +ARG UBUNTU_IMAGE=ubuntu:noble FROM ran-base:latest AS gnb-base FROM ran-build:latest AS gnb-build #start from scratch for target executable -FROM ubuntu:noble AS oai-gnb +FROM ${UBUNTU_IMAGE} AS oai-gnb ARG BUILD_OPTION ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe/Paris diff --git a/docker/Dockerfile.lteRU.ubuntu b/docker/Dockerfile.lteRU.ubuntu index 9bf886a096..23be653c58 100644 --- a/docker/Dockerfile.lteRU.ubuntu +++ b/docker/Dockerfile.lteRU.ubuntu @@ -25,13 +25,14 @@ # #--------------------------------------------------------------------- +ARG UBUNTU_IMAGE=ubuntu:noble FROM ran-base:latest AS ru-base FROM ran-build:latest AS ru-build #start from scratch for target executable -FROM ubuntu:noble AS oai-lte-ru +FROM ${UBUNTU_IMAGE} AS oai-lte-ru ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe/Paris diff --git a/docker/Dockerfile.lteUE.ubuntu b/docker/Dockerfile.lteUE.ubuntu index 7c608c0077..7ce0b7bea5 100644 --- a/docker/Dockerfile.lteUE.ubuntu +++ b/docker/Dockerfile.lteUE.ubuntu @@ -25,13 +25,15 @@ # #--------------------------------------------------------------------- +ARG UBUNTU_IMAGE=ubuntu:noble + FROM ran-base:latest AS lte-ue-base -FROM ran-build:latest AS lte-ue-build +FROM ran-build:latest AS lte-ue-build #start from scratch for target executable -FROM ubuntu:noble AS oai-lte-ue +FROM ${UBUNTU_IMAGE} AS oai-lte-ue ARG BUILD_OPTION ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe/Paris diff --git a/docker/Dockerfile.nr-cuup.ubuntu b/docker/Dockerfile.nr-cuup.ubuntu index ed00800582..af6911c22e 100644 --- a/docker/Dockerfile.nr-cuup.ubuntu +++ b/docker/Dockerfile.nr-cuup.ubuntu @@ -25,12 +25,13 @@ # #--------------------------------------------------------------------- +ARG UBUNTU_IMAGE=ubuntu:noble FROM ran-base:latest AS gnb-base FROM ran-build:latest AS gnb-build -FROM ubuntu:noble AS oai-nr-cuup +FROM ${UBUNTU_IMAGE} AS oai-nr-cuup ARG BUILD_OPTION ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe @@ -46,7 +47,7 @@ RUN apt-get update && \ libyaml-cpp-dev && \ # if the --sanitize option was used to build, additional packages are required /bin/bash -c 'if [[ "$BUILD_OPTION" = "--sanitize" ]]; then DEBIAN_FRONTEND=noninteractive apt-get install --yes \ - libasan8 \ + libasan8 \ libubsan1; fi' && \ rm -rf /var/lib/apt/lists/* diff --git a/docker/Dockerfile.nrORU.fhi72.ubuntu b/docker/Dockerfile.nrORU.fhi72.ubuntu index dc014c70d8..67d2fc2da9 100644 --- a/docker/Dockerfile.nrORU.fhi72.ubuntu +++ b/docker/Dockerfile.nrORU.fhi72.ubuntu @@ -18,13 +18,14 @@ # * For more information about the OpenAirInterface (OAI) Software Alliance: # * contact@openairinterface.org # */ - +ARG UBUNTU_IMAGE=ubuntu:noble FROM ran-base:latest AS ran-base FROM ran-build-fhi72:latest AS ran-build #start from scratch for target executable -FROM ubuntu:noble AS oai-nr-oru +FROM ${UBUNTU_IMAGE} AS oai-nr-oru +ARG BUILD_OPTION ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe diff --git a/docker/Dockerfile.nrUE.ubuntu b/docker/Dockerfile.nrUE.ubuntu index ef700825d1..08c83899b7 100644 --- a/docker/Dockerfile.nrUE.ubuntu +++ b/docker/Dockerfile.nrUE.ubuntu @@ -25,13 +25,14 @@ # #--------------------------------------------------------------------- +ARG UBUNTU_IMAGE=ubuntu:noble FROM ran-base:latest AS nr-ue-base FROM ran-build:latest AS nr-ue-build #start from scratch for target executable -FROM ubuntu:noble AS oai-nr-ue +FROM ${UBUNTU_IMAGE} AS oai-nr-ue ARG BUILD_OPTION ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe/Paris