mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
ci: improve Dockerfile to make proper use of build cache
Signed-off-by: Marcos Lilljedahl <marcosnils@gmail.com>
This commit is contained in:
parent
ea5023a4ad
commit
d542f795bb
19
Dockerfile
19
Dockerfile
@ -4,6 +4,10 @@ ARG version=22.04
|
|||||||
FROM ubuntu:"${version}"
|
FROM ubuntu:"${version}"
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
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
|
# We don't want to manually pin versions, happy to use whatever
|
||||||
# Ubuntu thinks is best.
|
# Ubuntu thinks is best.
|
||||||
# hadolint ignore=DL3008
|
# hadolint ignore=DL3008
|
||||||
@ -48,7 +52,7 @@ RUN apt-get update \
|
|||||||
&& rm -rf /var/lib/apt/lists/* \
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
&& sed -i -E 's/^(USERGROUPS_ENAB\s+)yes$/\1no/' /etc/login.defs \
|
&& sed -i -E 's/^(USERGROUPS_ENAB\s+)yes$/\1no/' /etc/login.defs \
|
||||||
&& localedef -i en_US -f UTF-8 en_US.UTF-8 \
|
&& 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 \
|
&& echo 'linuxbrew ALL=(ALL) NOPASSWD:ALL' >>/etc/sudoers \
|
||||||
&& su - linuxbrew -c 'mkdir ~/.linuxbrew'
|
&& 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
|
XDG_CACHE_HOME=/home/linuxbrew/.cache
|
||||||
WORKDIR /home/linuxbrew
|
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/bin \
|
||||||
.linuxbrew/etc \
|
.linuxbrew/etc \
|
||||||
.linuxbrew/include \
|
.linuxbrew/include \
|
||||||
@ -76,5 +90,4 @@ RUN mkdir -p \
|
|||||||
&& brew cleanup \
|
&& brew cleanup \
|
||||||
&& { git -C .linuxbrew/Homebrew config --unset gc.auto; true; } \
|
&& { git -C .linuxbrew/Homebrew config --unset gc.auto; true; } \
|
||||||
&& { git -C .linuxbrew/Homebrew config --unset homebrew.devcmdrun; true; } \
|
&& { git -C .linuxbrew/Homebrew config --unset homebrew.devcmdrun; true; } \
|
||||||
&& rm -rf .cache \
|
|
||||||
&& touch .linuxbrew/.homebrewdocker
|
&& touch .linuxbrew/.homebrewdocker
|
||||||
|
Loading…
x
Reference in New Issue
Block a user