From bab3c49843d4d2788f71b25373c208fe33e07482 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Piku=C5=82a?= Date: Tue, 16 Jan 2024 14:15:39 +0100 Subject: [PATCH] Clean-up Dockerfile MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - 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 --- Dockerfile | 97 +++++++++++++++++++++++++++++++++++---------------------- docker-build.sh | 13 ++++---- 2 files changed, 66 insertions(+), 44 deletions(-) diff --git a/Dockerfile b/Dockerfile index d323197..d216270 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/docker-build.sh b/docker-build.sh index f1473ef..da6f99c 100755 --- a/docker-build.sh +++ b/docker-build.sh @@ -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 . -- 2.7.4