diff --git a/.gitlab/ci/build.yml b/.gitlab/ci/build.yml index a4c43e69598..39849f51f5d 100644 --- a/.gitlab/ci/build.yml +++ b/.gitlab/ci/build.yml @@ -233,12 +233,15 @@ build_docker: variables: DOCKER_TMP_IMAGE_NAME: "idf_tmp_image" script: - - export DOCKER_BUILD_ARGS="--build-arg IDF_CLONE_URL=${CI_REPOSITORY_URL} --build-arg IDF_CLONE_BRANCH_OR_TAG=${CI_COMMIT_REF_NAME} --build-arg IDF_CHECKOUT_REF=${CI_COMMIT_TAG:-$CI_COMMIT_SHA} --build-arg IDF_CLONE_SHALLOW=1 --build-arg IDF_GITHUB_ASSETS=${INTERNAL_GITHUB_ASSETS}" - - docker build --tag ${DOCKER_TMP_IMAGE_NAME} ${DOCKER_BUILD_ARGS} tools/docker/ + # use different image tag for different concurrent job + - export DOCKER_TMP_IMAGE="${DOCKER_TMP_IMAGE_NAME}:${CI_CONCURRENT_ID:-latest}" + - export DOCKER_BUILD_ARGS="--build-arg IDF_CLONE_URL=${CI_REPOSITORY_URL} --build-arg IDF_CLONE_BRANCH_OR_TAG=${CI_COMMIT_REF_NAME} --build-arg IDF_CHECKOUT_REF=${CI_COMMIT_TAG:-$CI_COMMIT_SHA} --build-arg IDF_CLONE_SHALLOW=1 ${EXTRA_DOCKER_BUILD_ARGS:-} " + - time docker build --tag ${DOCKER_TMP_IMAGE} ${DOCKER_BUILD_ARGS} tools/docker/ # We can't mount $PWD/examples/get-started/blink into the container, see https://gitlab.com/gitlab-org/gitlab-ce/issues/41227. # The workaround mentioned there works, but leaves around directories which need to be cleaned up manually. # Therefore, build a copy of the example located inside the container. - - docker run --rm --workdir /opt/esp/idf/examples/get-started/blink ${DOCKER_TMP_IMAGE_NAME} idf.py build + - docker run --rm --workdir /opt/esp/idf/examples/get-started/blink ${DOCKER_TMP_IMAGE} idf.py build + # This job builds template app with permutations of targets and optimization levels build_template_app: diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index dfab87d65f0..5c41fb798c6 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -39,6 +39,16 @@ RUN : \ && update-alternatives --install /usr/bin/python python /usr/bin/python3 10 \ && : +ARG IDF_INSTALL_TARGETS=all + +# install build essential needed for linux target apps, which is a preview target so it is installed with "all" only +RUN if [ "$IDF_INSTALL_TARGETS" = "all" ]; then \ + apt-get update \ + && apt-get install -y build-essential \ + && apt-get autoremove -y \ + && rm -rf /var/lib/apt/lists/* ; \ + fi + # To build the image for a branch or a tag of IDF, pass --build-arg IDF_CLONE_BRANCH_OR_TAG=name. # To build the image with a specific commit ID of IDF, pass --build-arg IDF_CHECKOUT_REF=commit-id. # It is possible to combine both, e.g.: @@ -53,21 +63,13 @@ ARG IDF_CLONE_BRANCH_OR_TAG=master ARG IDF_CHECKOUT_REF= ARG IDF_CLONE_SHALLOW= ARG IDF_CLONE_SHALLOW_DEPTH=1 -ARG IDF_INSTALL_TARGETS=all ARG IDF_GITHUB_ASSETS= +ARG PIP_INDEX_URL= ENV IDF_PATH=/opt/esp/idf ENV IDF_TOOLS_PATH=/opt/esp ENV IDF_GITHUB_ASSETS=${IDF_GITHUB_ASSETS} -# install build essential needed for linux target apps, which is a preview target so it is installed with "all" only -RUN if [ "$IDF_INSTALL_TARGETS" = "all" ]; then \ - apt-get update \ - && apt-get install -y build-essential \ - && apt-get autoremove -y \ - && rm -rf /var/lib/apt/lists/* ; \ - fi - RUN echo IDF_CHECKOUT_REF=$IDF_CHECKOUT_REF IDF_CLONE_BRANCH_OR_TAG=$IDF_CLONE_BRANCH_OR_TAG && \ git clone --recursive \ ${IDF_CLONE_SHALLOW:+--depth=${IDF_CLONE_SHALLOW_DEPTH} --shallow-submodules} \