From 264c90240352399b52a8279d6a97ff9977aaa8a1 Mon Sep 17 00:00:00 2001 From: Alex Turbov Date: Wed, 29 Jan 2025 19:03:06 +0400 Subject: ci(fedora41): split install prerequisites and build RVM into separate phases It improves parallelization and speeds up the build by reusing cached layers. --- .gitlab/ci/docker/fedora41/Dockerfile | 19 +++++++++++++++---- .gitlab/ci/docker/fedora41/build_rvm.sh | 18 ++++++++++++++++++ .gitlab/ci/docker/fedora41/install_rvm.sh | 20 -------------------- 3 files changed, 33 insertions(+), 24 deletions(-) create mode 100755 .gitlab/ci/docker/fedora41/build_rvm.sh delete mode 100755 .gitlab/ci/docker/fedora41/install_rvm.sh diff --git a/.gitlab/ci/docker/fedora41/Dockerfile b/.gitlab/ci/docker/fedora41/Dockerfile index 4ef87da..872fa4a 100644 --- a/.gitlab/ci/docker/fedora41/Dockerfile +++ b/.gitlab/ci/docker/fedora41/Dockerfile @@ -25,16 +25,27 @@ RUN --mount=type=bind,source=dnf.conf,target=/etc/dnf/dnf.conf \ --mount=type=tmpfs,target=/tmp \ sh /root/install_rust.sh -FROM ${BASE_IMAGE} AS rvm-build -LABEL maintainer="Ben Boeckel " +FROM ${BASE_IMAGE} AS rvm-build-env +LABEL maintainer="Ben Boeckel " +# Pre-install prerequisites for RVM. RUN --mount=type=bind,source=dnf.conf,target=/etc/dnf/dnf.conf \ - --mount=type=bind,source=install_rvm.sh,target=/root/install_rvm.sh \ --mount=type=bind,source=rvm_packages.lst,target=/root/rvm_packages.lst \ --mount=type=cache,from=dnf-cache,source=/var/cache/libdnf5,target=/var/cache/libdnf5,sharing=private \ --mount=type=tmpfs,target=/var/log \ --mount=type=tmpfs,target=/tmp \ - sh /root/install_rvm.sh + dnf install -y $(grep '^[^#]\+$' /root/rvm_packages.lst) + + +FROM rvm-build-env AS rvm-build +LABEL maintainer="Ben Boeckel " +# Build Ruby with RVM. +RUN --mount=type=bind,source=build_rvm.sh,target=/root/build_rvm.sh \ + --mount=type=cache,target=/usr/local/rvm/archives \ + --mount=type=cache,target=/usr/local/rvm/gem-cache \ + --mount=type=cache,target=/usr/local/rvm/src \ + --mount=type=tmpfs,target=/tmp \ + sh /root/build_rvm.sh FROM ${BASE_IMAGE} AS iwyu-build-env diff --git a/.gitlab/ci/docker/fedora41/build_rvm.sh b/.gitlab/ci/docker/fedora41/build_rvm.sh new file mode 100755 index 0000000..c15a951 --- /dev/null +++ b/.gitlab/ci/docker/fedora41/build_rvm.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -e + +gpg2 --keyserver hkps://keyserver.ubuntu.com \ + --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \ + 7D2BAF1CF37B13E2069D6956105BD0E739499BDB + +curl -sSL https://get.rvm.io | bash -s stable + +# keep version in sync with `env_fedora*_makefiles.cmake` +/usr/local/rvm/bin/rvm install ruby-3.0.4 + +for p in archives examples gem-cache log src; do + touch /usr/local/rvm/${p}/.tar_exclude +done + +tar -C /usr/local --exclude-tag-under=.tar_exclude -cf /root/rvm.tar rvm diff --git a/.gitlab/ci/docker/fedora41/install_rvm.sh b/.gitlab/ci/docker/fedora41/install_rvm.sh deleted file mode 100755 index 92e75bc..0000000 --- a/.gitlab/ci/docker/fedora41/install_rvm.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -set -e - -dnf install -y $(grep '^[^#]\+$' /root/rvm_packages.lst) - -gpg2 --keyserver hkps://keyserver.ubuntu.com \ - --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \ - 7D2BAF1CF37B13E2069D6956105BD0E739499BDB - -curl -sSL https://get.rvm.io | bash -s stable - -# keep version in sync with `env_fedora*_makefiles.cmake` -/usr/local/rvm/bin/rvm install ruby-3.0.4 - -for p in archives examples gem-cache log src; do - touch /usr/local/rvm/${p}/.tar_exclude -done - -tar -C /usr/local --exclude-tag-under=.tar_exclude -cf /root/rvm.tar rvm -- cgit v0.12