From 354fdf2116e286947fc2c645827d530f5112aea4 Mon Sep 17 00:00:00 2001 From: Alex Turbov Date: Wed, 1 Feb 2023 02:43:25 +0400 Subject: ci: Reduce intermediate docker layers and final image size Instead of `COPY` to get tar files, execute `RUN` w/ `--mount`. Note that this requires the docker "buildkit" feature to be enabled. --- .gitlab/ci/docker/debian10/Dockerfile | 15 +++++++-------- .gitlab/ci/docker/debian10/install_iwyu.sh | 2 +- .gitlab/ci/docker/fedora37/Dockerfile | 21 ++++++++++----------- .gitlab/os-linux.yml | 4 ++-- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/.gitlab/ci/docker/debian10/Dockerfile b/.gitlab/ci/docker/debian10/Dockerfile index 34a4bf1..2d3ae3a 100644 --- a/.gitlab/ci/docker/debian10/Dockerfile +++ b/.gitlab/ci/docker/debian10/Dockerfile @@ -1,10 +1,10 @@ -FROM debian:10 as iwyu-build +FROM debian:10 AS iwyu-build MAINTAINER Ben Boeckel COPY install_iwyu.sh /root/install_iwyu.sh RUN sh /root/install_iwyu.sh -FROM debian:10 as rvm-build +FROM debian:10 AS rvm-build MAINTAINER Ben Boeckel COPY install_rvm.sh /root/install_rvm.sh @@ -16,10 +16,9 @@ MAINTAINER Ben Boeckel COPY install_deps.sh /root/install_deps.sh RUN sh /root/install_deps.sh -COPY --from=iwyu-build /root/iwyu.tar.gz /root/iwyu.tar.gz -RUN tar -C / -xf /root/iwyu.tar.gz -RUN ln -s /usr/lib/llvm-6.0/bin/include-what-you-use /usr/bin/include-what-you-use-6.0 +RUN --mount=type=bind,from=iwyu-build,source=/root,target=/root \ + tar -C / -xf /root/iwyu.tar \ + && ln -s /usr/lib/llvm-6.0/bin/include-what-you-use /usr/bin/include-what-you-use-6.0 -COPY --from=rvm-build /root/rvm.tar /root/rvm.tar -RUN tar -C /usr/local -xf /root/rvm.tar \ - && rm /root/rvm.tar +RUN --mount=type=bind,from=rvm-build,source=/root,target=/root \ + tar -C /usr/local -xf /root/rvm.tar diff --git a/.gitlab/ci/docker/debian10/install_iwyu.sh b/.gitlab/ci/docker/debian10/install_iwyu.sh index 54d26ef..260570e 100755 --- a/.gitlab/ci/docker/debian10/install_iwyu.sh +++ b/.gitlab/ci/docker/debian10/install_iwyu.sh @@ -29,4 +29,4 @@ cmake -GNinja \ .. ninja DESTDIR=/root/iwyu-destdir ninja install -tar -C /root/iwyu-destdir -cf /root/iwyu.tar.gz . +tar -C /root/iwyu-destdir -cf /root/iwyu.tar . diff --git a/.gitlab/ci/docker/fedora37/Dockerfile b/.gitlab/ci/docker/fedora37/Dockerfile index 13ef9aa..1ba9e37 100644 --- a/.gitlab/ci/docker/fedora37/Dockerfile +++ b/.gitlab/ci/docker/fedora37/Dockerfile @@ -1,4 +1,4 @@ -FROM fedora:37 as rvm-build +FROM fedora:37 AS rvm-build MAINTAINER Ben Boeckel COPY install_rvm.sh /root/install_rvm.sh @@ -10,7 +10,7 @@ MAINTAINER Kyle Edwards COPY install_clang_tidy_headers.sh /root/install_clang_tidy_headers.sh RUN sh /root/install_clang_tidy_headers.sh -FROM fedora:37 AS iwyu +FROM fedora:37 AS iwyu-build MAINTAINER Kyle Edwards COPY install_iwyu.sh /root/install_iwyu.sh @@ -22,12 +22,11 @@ MAINTAINER Ben Boeckel COPY install_deps.sh /root/install_deps.sh RUN sh /root/install_deps.sh -COPY --from=rvm-build /root/rvm.tar /root/rvm.tar -RUN tar -C /usr/local -xf /root/rvm.tar \ - && rm /root/rvm.tar -COPY --from=clang-tidy-headers /root/clang-tidy-headers.tar /root/clang-tidy-headers.tar -RUN tar -C /usr/include -xf /root/clang-tidy-headers.tar \ - && rm /root/clang-tidy-headers.tar -COPY --from=iwyu /root/iwyu.tar /root/iwyu.tar -RUN tar -C / -xf /root/iwyu.tar \ - && rm /root/iwyu.tar +RUN --mount=type=bind,from=rvm-build,source=/root,target=/root \ + tar -C /usr/local -xf /root/rvm.tar + +RUN --mount=type=bind,from=clang-tidy-headers,source=/root,target=/root \ + tar -C /usr/include -xf /root/clang-tidy-headers.tar + +RUN --mount=type=bind,from=iwyu-build,source=/root,target=/root \ + tar -C / -xf /root/iwyu.tar diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index c00c4aa..9d7be0e 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -45,7 +45,7 @@ ### Debian .debian10: - image: "kitware/cmake:ci-debian10-x86_64-2023-01-26" + image: "kitware/cmake:ci-debian10-x86_64-2023-02-06" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" @@ -69,7 +69,7 @@ ### Fedora .fedora37: - image: "kitware/cmake:ci-fedora37-x86_64-2023-01-26" + image: "kitware/cmake:ci-fedora37-x86_64-2023-02-06" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes" -- cgit v0.12