Clean-up Dockerfile 84/307084/1
authorMarek Pikuła <m.pikula@partner.samsung.com>
Tue, 16 Jan 2024 13:15:39 +0000 (14:15 +0100)
committerMarek Pikuła <m.pikula@partner.samsung.com>
Mon, 4 Mar 2024 14:15:09 +0000 (15:15 +0100)
- use BART-provided base Ubuntu images
- use COPY instead of ADD (safer)
- decrease number of layers
- improve formatting

Change-Id: Ia9357f404bf2cd323db1df371ad7bdfe45ed461e
Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
Dockerfile
docker-build.sh

index d323197..d216270 100644 (file)
@@ -1,41 +1,62 @@
-FROM ubuntu:20.04 as build
-
-ENV DEBIAN_FRONTEND="noninteractive"
-ENV TZ=UTC
-
-ADD bsdiff /bsdiff
-
-RUN apt-get update && apt-get -y --no-install-recommends install libbrotli-dev libdivsufsort-dev git cmake build-essential pkg-config
-RUN cd bsdiff && cmake . && make install
-
-FROM ubuntu:20.04
-
-ENV TZ=UTC
-ENV DEBIAN_FRONTEND="noninteractive"
-ADD mk_delta /tota-upg/mk_delta/
-ADD scripts  /tota-upg/scripts/
-ADD recovery /tota-upg/recovery/
-COPY --from=build /usr/local/bin/ss_bsdiff /usr/local/bin/
-RUN apt-get update && \
-       apt-get install -y --no-install-recommends libbrotli1 libdivsufsort3 python-is-python2 python2 python-apt python3-apt python3 python3-pip aria2 brotli attr tar file sudo git && rm -rf /var/lib/apt/lists/*
-
-RUN pip3 install requests beautifulsoup4 PyYAML
-
-COPY mass-delta-builder/pre_run.sh /app/
-COPY mass-delta-builder/mass-delta-builder.py /app/
-
-ARG CFG_GIT_CLONE_PATH
-ARG CFG_GIT_BRANCH
-
-RUN git clone "$CFG_GIT_CLONE_PATH" /tota-upg/mk_delta/temp && \
-       git --git-dir=/tota-upg/mk_delta/temp/.git --work-tree=/tota-upg/mk_delta/temp checkout "$CFG_GIT_BRANCH" && \
-       rm -rf /tota-upg/mk_delta/temp/.git && \
-       bash /tota-upg/scripts/directory-setup.sh /tota-upg/mk_delta/temp/ && \
-       cp -r /tota-upg/mk_delta/temp/* /tota-upg/mk_delta/ && \
-       rm -rf /tota-upg/mk_delta/temp/
+# syntax=docker/dockerfile-upstream:master-labs
+# Stage 1: bsdiff build image
+FROM docker-remote.bart.sec.samsung.net/ubuntu:20.04 as build
+
+COPY bsdiff /bsdiff
+RUN apt-get update \
+       && DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
+               build-essential \
+               cmake \
+               git \
+               libbrotli-dev \
+               libdivsufsort-dev \
+               pkg-config \
+       && cd bsdiff \
+       && cmake . \
+       && make install
+
+# Stage 2: upgrade-tools image
+FROM docker-remote.bart.sec.samsung.net/ubuntu:20.04
+
+RUN apt-get update \
+       && DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
+               aria2 \
+               attr \
+               brotli \
+               file \
+               git \
+               libbrotli1 \
+               libdivsufsort3 \
+               python-apt \
+               python-is-python2 \
+               python2 \
+               python3 \
+               python3-apt \
+               python3-pip \
+               sudo \
+               tar \
+       && rm -rf /var/lib/apt/lists/*
+COPY --from=build --link /usr/local/bin/ss_bsdiff /usr/local/bin/
+
+# TOTA upgrade tools
+COPY --link --parents mk_delta/ scripts/ recovery/ /tota-upg/
+
+# mass-delta-builder
+RUN pip3 install \
+               beautifulsoup4 \
+               PyYAML \
+               requests
+COPY --link mass-delta-builder/pre_run.sh mass-delta-builder/mass-delta-builder.py /app/
+
+# External plugin
+ARG CFG_GIT_CLONE_PATH="https://git.tizen.org/cgit/platform/core/system/plugin/upgrade-tools-generic" \
+       CFG_GIT_BRANCH=tizen
+
+RUN --mount=type=tmpfs,target=/tota-upg/mk_delta/temp \
+       git clone --branch "${CFG_GIT_BRANCH}" "${CFG_GIT_CLONE_PATH}" /tota-upg/mk_delta/temp \
+       && bash /tota-upg/scripts/directory-setup.sh /tota-upg/mk_delta/temp/ \
+       && cp -rf /tota-upg/mk_delta/temp/* /tota-upg/mk_delta/
 
 WORKDIR /app
 
-VOLUME /images/
-VOLUME /result/
-VOLUME /app/cfg/
+VOLUME /images /result /app/cfg
index f1473ef..da6f99c 100755 (executable)
@@ -1,12 +1,13 @@
 #!/bin/sh
 
-if [ -z "${DOCKER_CFG_GIT_CLONE_PATH}" ]; then
-       DOCKER_CFG_GIT_CLONE_PATH="git://git.tizen.org/platform/core/system/plugin/upgrade-tools-generic"
+DOCKER_ARGS=
+
+if [ "${DOCKER_CFG_GIT_CLONE_PATH}x" != "x" ]; then
+       DOCKER_ARGS="${DOCKER_ARGS} --build-arg CFG_GIT_CLONE_PATH="${DOCKER_CFG_GIT_CLONE_PATH}""
 fi
 
-if [ -z "${DOCKER_CFG_GIT_BRANCH}" ]; then
-       DOCKER_CFG_GIT_BRANCH="origin/tizen"
+if [ "${DOCKER_CFG_GIT_BRANCH}x" != "x" ]; then
+       DOCKER_ARGS="${DOCKER_ARGS} --build-arg CFG_GIT_BRANCH="${DOCKER_CFG_GIT_BRANCH}""
 fi
 
-exec docker build --build-arg CFG_GIT_CLONE_PATH="${DOCKER_CFG_GIT_CLONE_PATH}" \
-       --build-arg CFG_GIT_BRANCH="${DOCKER_CFG_GIT_BRANCH}" --no-cache -t upgrade-tools:latest .
+exec docker build ${DOCKER_ARGS} -t upgrade-tools:latest .