-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
#!/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 .