From d542f795bbeada2476acffd88f5df0d8fcc0cf90 Mon Sep 17 00:00:00 2001 From: Marcos Lilljedahl Date: Fri, 28 Jun 2024 13:47:22 -0300 Subject: [PATCH] ci: improve Dockerfile to make proper use of build cache Signed-off-by: Marcos Lilljedahl --- Dockerfile | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 85be32ab7b366..e471752dca1d1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,10 @@ ARG version=22.04 FROM ubuntu:"${version}" ARG DEBIAN_FRONTEND=noninteractive +# Set the user ID to the default value of 1001 since different ubuntu +# versions yield to different user IDs with `useradd` +ENV USER_ID=1001 + # We don't want to manually pin versions, happy to use whatever # Ubuntu thinks is best. # hadolint ignore=DL3008 @@ -48,7 +52,7 @@ RUN apt-get update \ && rm -rf /var/lib/apt/lists/* \ && sed -i -E 's/^(USERGROUPS_ENAB\s+)yes$/\1no/' /etc/login.defs \ && localedef -i en_US -f UTF-8 en_US.UTF-8 \ - && useradd --create-home --shell /bin/bash --user-group linuxbrew \ + && useradd -u "${USER_ID}" --create-home --shell /bin/bash --user-group linuxbrew \ && echo 'linuxbrew ALL=(ALL) NOPASSWD:ALL' >>/etc/sudoers \ && su - linuxbrew -c 'mkdir ~/.linuxbrew' @@ -58,7 +62,17 @@ ENV PATH="/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:${PATH} XDG_CACHE_HOME=/home/linuxbrew/.cache WORKDIR /home/linuxbrew -RUN mkdir -p \ + +RUN --mount=type=cache,target=/tmp/homebrew-core,uid="${USER_ID}",sharing=locked \ + # Clone the homebre-core repo into /tmp/homebrew-core or pull latest changes if it exists + git clone https://github.com/homebrew/homebrew-core /tmp/homebrew-core || { cd /tmp/homebrew-core && git pull; } \ + && mkdir -p /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core \ + && cp -r /tmp/homebrew-core /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/ + + +RUN --mount=type=cache,target=/home/linuxbrew/.cache,uid="${USER_ID}" \ + --mount=type=cache,target=/home/linuxbrew/.bundle,uid="${USER_ID}" \ + mkdir -p \ .linuxbrew/bin \ .linuxbrew/etc \ .linuxbrew/include \ @@ -76,5 +90,4 @@ RUN mkdir -p \ && brew cleanup \ && { git -C .linuxbrew/Homebrew config --unset gc.auto; true; } \ && { git -C .linuxbrew/Homebrew config --unset homebrew.devcmdrun; true; } \ - && rm -rf .cache \ && touch .linuxbrew/.homebrewdocker