From 048e590ca2e446b39b8be7f8a0f9af343a1ab381 Mon Sep 17 00:00:00 2001 From: William Li Date: Mon, 30 Mar 2020 11:56:19 -0700 Subject: [PATCH] Add docker pull retry (#6968) --- eng/dockerrun.sh | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/eng/dockerrun.sh b/eng/dockerrun.sh index 762e177a7..819858ea2 100755 --- a/eng/dockerrun.sh +++ b/eng/dockerrun.sh @@ -99,9 +99,30 @@ fi # VSO [ ! -z "$BUILD_BUILDID" ] && DOTNET_BUILD_CONTAINER_NAME="$BUILD_BUILDID" +function retry { + local max_count=$1 + shift + + local count=0 + until "$@"; do + exit=$? + wait=$((2 ** $count)) + count=$(($count + 1)) + if [[ ${count} -lt ${max_count} ]]; then + echo "Retry $count/$max_count returned $exit, wait $wait seconds..." + sleep ${wait} + else + echo "Retry $count/$max_count returned $exit." + return ${exit} + fi + done + return 0 +} + # Build the docker container (will be fast if it is already built) +# with retry since docker pull has high failure rate echo "Building Docker Container using Dockerfile: $DOCKERFILE" -docker build --build-arg WORK_DIR=$DOCKER_HOST_SHARE_DIR --build-arg USER_ID=$(id -u) -t $DOTNET_BUILD_CONTAINER_TAG $DOCKERFILE +retry 10 docker build --build-arg WORK_DIR=$DOCKER_HOST_SHARE_DIR --build-arg USER_ID=$(id -u) -t $DOTNET_BUILD_CONTAINER_TAG $DOCKERFILE 2>&1 # Run the build in the container echo "Launching build in Docker Container"