diff --git a/.github/workflows/debian.yml b/.github/workflows/debian.yml index 1185dfb..10dc192 100644 --- a/.github/workflows/debian.yml +++ b/.github/workflows/debian.yml @@ -9,7 +9,8 @@ on: env: CONTAINER_REGISTRY: ghcr.io BUILDKIT_PROGRESS: plain - CONAN_VERSION: 2.17.0 + CONAN_VERSION: 2.18.0 + GCOVR_VERSION: 8.3 NONROOT_USER: ci FALLBACK_GCC: 12 FALLBACK_CLANG: 16 @@ -98,9 +99,9 @@ jobs: BUILDKIT_DOCKERFILE_CHECK=skip=InvalidDefaultArgInFrom BUILDKIT_INLINE_CACHE=1 CLANG_VERSION=${{ matrix.os.compiler_name == 'clang' && matrix.os.compiler_version || env.FALLBACK_CLANG }} - GCC_VERSION=${{ matrix.os.compiler_name == 'gcc' && matrix.os.compiler_version || env.FALLBACK_GCC }} CONAN_VERSION=${{ env.CONAN_VERSION }} - GITHUB_REPO=${{ github.repository }} + GCC_VERSION=${{ matrix.os.compiler_name == 'gcc' && matrix.os.compiler_version || env.FALLBACK_GCC }} + GCOVR_VERSION=${{ env.GCOVR_VERSION }} NONROOT_USER=${{ env.NONROOT_USER }} DEBIAN_VERSION=${{ matrix.os.release }} context: docker/debian diff --git a/.github/workflows/rhel.yml b/.github/workflows/rhel.yml index 98d4bc2..1d9e246 100644 --- a/.github/workflows/rhel.yml +++ b/.github/workflows/rhel.yml @@ -10,7 +10,8 @@ env: CONTAINER_REGISTRY: ghcr.io REDHAT_REGISTRY: registry.redhat.io BUILDKIT_PROGRESS: plain - CONAN_VERSION: 2.17.0 + CONAN_VERSION: 2.18.0 + GCOVR_VERSION: 8.3 NONROOT_USER: ci jobs: @@ -90,7 +91,7 @@ jobs: BUILDKIT_INLINE_CACHE=1 CONAN_VERSION=${{ env.CONAN_VERSION }} GCC_VERSION=${{ matrix.os.compiler_version }} - GITHUB_REPO=${{ github.repository }} + GCOVR_VERSION=${{ env.GCOVR_VERSION }} NONROOT_USER=${{ env.NONROOT_USER }} RHEL_VERSION=${{ matrix.os.release }} context: docker/rhel diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index e41c865..cc5a868 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -9,7 +9,8 @@ on: env: CONTAINER_REGISTRY: ghcr.io BUILDKIT_PROGRESS: plain - CONAN_VERSION: 2.17.0 + CONAN_VERSION: 2.18.0 + GCOVR_VERSION: 8.3 NONROOT_USER: ci FALLBACK_GCC: 12 FALLBACK_CLANG: 16 @@ -96,9 +97,9 @@ jobs: BUILDKIT_DOCKERFILE_CHECK=skip=InvalidDefaultArgInFrom BUILDKIT_INLINE_CACHE=1 CLANG_VERSION=${{ matrix.os.compiler_name == 'clang' && matrix.os.compiler_version || env.FALLBACK_CLANG }} - GCC_VERSION=${{ matrix.os.compiler_name == 'gcc' && matrix.os.compiler_version || env.FALLBACK_GCC }} CONAN_VERSION=${{ env.CONAN_VERSION }} - GITHUB_REPO=${{ github.repository }} + GCC_VERSION=${{ matrix.os.compiler_name == 'gcc' && matrix.os.compiler_version || env.FALLBACK_GCC }} + GCOVR_VERSION=${{ env.GCOVR_VERSION }} NONROOT_USER=${{ env.NONROOT_USER }} UBUNTU_VERSION=${{ matrix.os.release }} context: docker/ubuntu diff --git a/docker/debian/Dockerfile b/docker/debian/Dockerfile index aaa37d9..663a855 100644 --- a/docker/debian/Dockerfile +++ b/docker/debian/Dockerfile @@ -26,6 +26,8 @@ ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime apt update apt upgrade -y apt install -y tzdata +apt clean +rm -rf /var/lib/apt/lists/* dpkg-reconfigure --frontend noninteractive tzdata EOF @@ -38,6 +40,8 @@ pkgs+=(bison) # Required build tool. pkgs+=(ca-certificates) # Enable TLS verification for HTTPS connections by providing trusted root certificates. pkgs+=(cmake) # Required build tool. pkgs+=(curl) # Dependency for tools requiring downloading data. +pkgs+=(dpkg-dev) # Required packaging tool. +pkgs+=(file) # Required packaging tool. pkgs+=(flex) # Required build tool. pkgs+=(git) # Required build tool. pkgs+=(gpg) # Dependency for tools requiring signing or encrypting/decrypting. @@ -47,15 +51,19 @@ pkgs+=(ninja-build) # Required build tool. pkgs+=(pipx) # Package manager for Python applications. pkgs+=(wget) # Required build tool. apt update -apt install -y "${pkgs[@]}" +apt install -y --no-install-recommends "${pkgs[@]}" +apt clean +rm -rf /var/lib/apt/lists/* EOF -# Install Conan. +# Install Python-based tools. ARG CONAN_VERSION -RUN PIPX_HOME=/opt/pipx \ +ARG GCOVR_VERSION +ENV PIPX_HOME=/opt/pipx \ PIPX_BIN_DIR=/usr/bin \ - PIPX_MAN_DIR=/usr/share/man \ - pipx install conan==${CONAN_VERSION} + PIPX_MAN_DIR=/usr/share/man +RUN pipx install --pip-args='--no-cache' conan==${CONAN_VERSION} && \ + pipx install --pip-args='--no-cache' gcovr==${GCOVR_VERSION} # Create the user to switch to, once all packages have been installed. ARG NONROOT_USER @@ -91,9 +99,6 @@ EOF ENV CC=/usr/bin/gcc ENV CXX=/usr/bin/g++ -# Clean up unnecessary files to reduce image size. -RUN rm -rf /var/lib/apt/lists/* && apt clean - # Switch to the non-root user. USER ${NONROOT_USER} WORKDIR /home/${NONROOT_USER} @@ -128,13 +133,12 @@ printf "%s\n%s\n" \ | tee /etc/apt/sources.list.d/llvm.list apt update apt install -t llvm-toolchain-${DEBIAN_VERSION}-${CLANG_VERSION} -y --no-install-recommends clang-${CLANG_VERSION} llvm-${CLANG_VERSION} +apt clean +rm -rf /var/lib/apt/lists/* EOF ENV CC=/usr/bin/clang-${CLANG_VERSION} ENV CXX=/usr/bin/clang++-${CLANG_VERSION} -# Clean up unnecessary files to reduce image size. -RUN rm -rf /var/lib/apt/lists/* && apt clean - # Switch to the non-root user. USER ${NONROOT_USER} WORKDIR /home/${NONROOT_USER} diff --git a/docker/debian/README.md b/docker/debian/README.md index 02bb8bc..3404230 100644 --- a/docker/debian/README.md +++ b/docker/debian/README.md @@ -40,7 +40,8 @@ registry. NONROOT_USER=${USER} DEBIAN_VERSION=bookworm GCC_VERSION=12 -CONAN_VERSION=2.17.0 +CONAN_VERSION=2.18.0 +GCOVR_VERSION=8.3 CONTAINER_IMAGE=xrplf/ci/debian-${DEBIAN_VERSION}:gcc-${GCC_VERSION} docker buildx build . \ @@ -50,6 +51,7 @@ docker buildx build . \ --build-arg CONAN_VERSION=${CONAN_VERSION} \ --build-arg DEBIAN_VERSION=${DEBIAN_VERSION} \ --build-arg GCC_VERSION=${GCC_VERSION} \ + --build-arg GCOVR_VERSION=${GCOVR_VERSION} \ --build-arg NONROOT_USER=${NONROOT_USER} \ --tag ${CONTAINER_REGISTRY}/${CONTAINER_IMAGE} ``` @@ -63,7 +65,8 @@ registry. NONROOT_USER=${USER} DEBIAN_VERSION=bookworm CLANG_VERSION=17 -CONAN_VERSION=2.17.0 +CONAN_VERSION=2.18.0 +GCOVR_VERSION=8.3 CONTAINER_IMAGE=xrplf/ci/debian-${DEBIAN_VERSION}:clang-${CLANG_VERSION} docker buildx build . \ @@ -73,6 +76,7 @@ docker buildx build . \ --build-arg CLANG_VERSION=${CLANG_VERSION} \ --build-arg CONAN_VERSION=${CONAN_VERSION} \ --build-arg DEBIAN_VERSION=${DEBIAN_VERSION} \ + --build-arg GCOVR_VERSION=${GCOVR_VERSION} \ --build-arg NONROOT_USER=${NONROOT_USER} \ --tag ${CONTAINER_REGISTRY}/${CONTAINER_IMAGE} ``` diff --git a/docker/rhel/Dockerfile b/docker/rhel/Dockerfile index 5ea5e8b..6fe6278 100644 --- a/docker/rhel/Dockerfile +++ b/docker/rhel/Dockerfile @@ -22,6 +22,7 @@ RUN <